如何在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; }