如何在C#中使用随机数?

我在C#w / XNA上工作Pong。

我想使用一个随机数(在一个范围内)来确定球是否直线,或以一定角度反弹,以及球击中桨时球的移动速度。

我想知道如何实现它。

使用Random类。 例如:

Random r = new Random(); int nextValue = r.Next(0, 100); // Returns a random number from 0-99 

除非您需要加密安全数字,否则Random应该没问题……但有两点需要注意:

  • 每次需要时都不应创建新实例。 如果在没有指定种子的情况下创建实例,它将使用当前时间作为种子 – 这意味着如果您快速连续创建多个实例,其中许多将生成相同的数字序列。 通常,您创建一个持久的Random实例Random用它。
  • 它不是线程安全的。 如果需要从多个线程生成随机数,则应考虑每个线程有一个实例。 阅读此博客文章了解更多信息 – 但请务必阅读评论,因为它们提供了非常有用的信息。
 Random rnd = new Random(); rnd.Next(minValue, maxValue); 

 rnd.Next(1,10); 

使用Random对象的Next方法,该方法采用min和max并返回该范围内的值:

 var random = new Random(); int randomNum = random.Next(min, max); 

虽然您可以像所有其他建议一样使用Random类,但Random类仅使用伪随机数生成。 RandomNumberGenerator可以在System.Security.Cryptography命名空间中找到,它可以创建实际的随机数。

如何使用:

 RandomNumberGenerator rng = RandomNumberGenerator.Create(); byte[] rand = new byte[25]; //Set the length of this array to // the number of random numbers you want rng.GetBytes(rand); 

更多信息: http : //msdn.microsoft.com/en-us/library/system.security.cryptography.randomnumbergenerator(v=VS.80).aspx

这是我的随机发生器

  private static Random rnd = new Random(Environment.TickCount); private int RandomNum(int Lower, int Upper) { return rnd.Next(Lower, Upper);//MyRandomNumber; }