我不知道在这种情况下随机数生成器是否有问题。
Random x = new Random();
do
{
a = x.Next(1, 200);
aa = x.Next(1, 200);
b = x.Next(a + 1, 200);
bb = x.Next(aa + 1, 200);
Console.WriteLine(a + " " + aa + " " + b + " " + bb);
} while (a != aa || b != bb);我在比较两对随机数是否相同,当它们相同时,我想知道这些数字是什么。由于某些原因,它们最终总是在150 - 200的范围内。对我来说这还不够随机。
基本上我是想模拟一下2号彩票中奖需要多长时间。
这是因为Random类不够随机,还是代码有问题?
发布于 2011-10-02 13:31:17
Random类的随机性没有任何问题,至少不会影响您的代码。
您挑选彩票号码的方式不正确。你选择的第一个数字本身就得到了一个正确的分布,但随后你又选择了另一个比第一个更高的数字,这将有利于范围内更高的数字。
此外,当第一个数字很高时,它更有可能猜测第二个数字,因为有一个较小的变化。在你的猜测中,你会看到更高的点击率。
除此之外,它看起来还不错。确定你能猜出一个数字的频率并没有任何线性分布。你很少在很早的时候就得到一个正确的猜测,而且你很少在没有得到正确的答案的情况下持续很长时间。这是正常的,你会看到一个集中在特定数量的猜测。
https://stackoverflow.com/questions/7624738
复制相似问题