【发布时间】:2011-06-19 00:43:57
【问题描述】:
我正在使用 Random 来生成一个随机数序列。我只构建一次随机对象,然后在循环内生成随机值(其中 300 个)。问题是,一旦我得到所有值并对它们进行排序,我就会意识到其中一些是相等和/或顺序的:我正在生成从 0 到 50000 的数字。
这是我的脚本:
Random rnd = new Random();
for (int n=0; n < 300; n++)
{
int RndNumber = rnd.Next(0, 50000);
System.Threading.Thread.Sleep(3);
}
有人可以知道为什么会发生这种情况,我该如何改进以使其更加随机?
【问题讨论】:
-
您需要具体说明如何定义“更随机”
-
为什么要对随机数进行排序?这不是违背了生成随机数的目的吗?
-
我不是数学家,但在我看来,在对 0 到 50000 之间的 300 个随机数列表进行排序后,至少有几个不会是相等或顺序。
-
为什么要对随机值进行排序?只是为了测试它们的分布吗?这可能与Birthday paradox 有关
-
您是否希望数字在 10、110、210、310 等范围内等距分布?这似乎不那么随机了。