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

时间:2010-07-10 03:06:58

标签: c# random xna

我正在使用C#w / XNA进行Pong。

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

我想知道如何实现它。

6 个答案:

答案 0 :(得分:14)

使用Random课程。例如:

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

答案 1 :(得分:7)

除非您需要加密安全号码,Random对您来说应该没问题......但有两点需要注意:

  • 每次需要时都不应创建新实例。如果在不指定种子的情况下创建实例,它将使用当前时间作为种子 - 这意味着如果您快速连续创建多个实例,其中许多将生成相同的数字序列。通常,您创建一个持久的Random实例并重复使用它。
  • 这不是线程安全的。如果需要从多个线程生成随机数,则应考虑每个线程有一个实例。请阅读this blog post以获取更多信息 - 但请务必阅读评论,因为它们包含非常有用的信息。

答案 2 :(得分:1)

Random rnd = new Random();
rnd.Next(minValue, maxValue);

<强>即

rnd.Next(1,10);

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

虽然您可以像其他人所建议的那样使用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

答案 5 :(得分:0)

这是我的随机生成器

 private static Random rnd = new Random(Environment.TickCount);

 private int RandomNum(int Lower, int Upper)
{

 return rnd.Next(Lower, Upper);//MyRandomNumber;

}