小编典典

如何为随机类设定种子,以避免获得重复的随机值[duplicate]

c#

这个问题已经在这里有了答案

随机数生成器仅生成一个随机数 (9个答案)

3年前关闭。

我在静态类的静态方法中有以下代码:

Random r = new Random();
int randomNumber = r.Next(1,100);

我在循环中有这个,我一直都一样randomNumber

有什么建议吗?


阅读 434

收藏
2020-05-19

共1个答案

小编典典

您不应Random在循环中创建新实例。尝试类似的方法:

var rnd = new Random();
for(int i = 0; i < 100; ++i) 
   Console.WriteLine(rnd.Next(1, 100));

Random假设单个实例生成的随机数序列是均匀分布的。通过Random快速连续地为每个随机数创建一个新实例,您很可能使用相同的值为它们播种并让它们生成相同的随机数。当然,在这种情况下,生成的序列将远非均匀分布。

为了完整起见,如果您确实需要重新设定RandomRandom则将使用新种子创建一个新实例:

rnd = new Random(newSeed);
2020-05-19