这个问题已经在这里有了答案 :
随机数生成器仅生成一个随机数 (9个答案)
3年前关闭。
我在静态类的静态方法中有以下代码:
Random r = new Random(); int randomNumber = r.Next(1,100);
我在循环中有这个,我一直都一样randomNumber!
randomNumber
有什么建议吗?
您不应Random在循环中创建新实例。尝试类似的方法:
Random
var rnd = new Random(); for(int i = 0; i < 100; ++i) Console.WriteLine(rnd.Next(1, 100));
Random假设单个实例生成的随机数序列是均匀分布的。通过Random快速连续地为每个随机数创建一个新实例,您很可能使用相同的值为它们播种并让它们生成相同的随机数。当然,在这种情况下,生成的序列将远非均匀分布。
为了完整起见,如果您确实需要重新设定Random,Random则将使用新种子创建一个新实例:
rnd = new Random(newSeed);