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

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

3年前关闭。

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

Random r = new Random();

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

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

有什么建议吗?

回答:

您不应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);

以上是 如何为随机类设定种子,以避免获得重复的随机值[duplicate] 的全部内容, 来源链接: utcz.com/qa/404804.html

回到顶部