【发布时间】:2017-01-25 02:17:31
【问题描述】:
我有这个代码:
var rand = new Random(0);
for(int i = 0; i < 100; i++)
{
Console.WriteLine(rand.Next(0, 100));
}
程序应该给我 100 倍相同的数字(因为种子是相同的),但它给出不同的数字...
为什么?
编辑:
我什么时候做
for(int i = 0; i < 100; i++)
{
Console.WriteLine(new Random(0).Next);
}
每次都返回相同的数字。这意味着,种子正在改变?如果是,如何?增加了吗?
【问题讨论】:
-
接下来让随机数生成器生成一个新的随机数。在您的示例中,您播种一次并调用 100 Next();
-
种子就是……种子——算法是如何初始化的。
Next会给你不同的数字,但这个序列与使用相同种子的新随机数相同 -
如果你想要 100 次相同的数字,那么为什么要使用
Random类 -
是的 - 您获得的 100 个数字将是“随机的”,但每次您从同一个种子开始时它们都会匹配。不是 x 重复 100 次,而是每次运行 For/Next 时都重复 x(1)-x(100)
-
将
var rand = new Random(0);移动到for块中,您会看到每次调用都会产生相同的数字。
标签: c# random random-seed