在刻意拖延之后,我开始想知道随机数以及没有人对随机数生成器的随机性感到满意,并想出了下面的代码。这会比随机更随机吗?
注意:我只是在这里玩,也就是说:不是一个严肃的问题,绝对不值得花一个多小时回答。
Random rand = new Random();
List<int> fifteenRandomNumbers = new List<int>();
for (int i = 0; i < 15; i++)
{
int randomNumber = rand.Next(0, 10);
fifteenRandomNumbers.Add(randomNumber);
}
string allNumbers = "";
foreach (int number in fifteenRandomNumbers)
{
allNumbers += number;
}
Convert.ToUInt64(allNumbers);
更新:感谢您的快速回答,并且重申一下,这不是我的目标实际实现,我只是好奇。而且我并不担心它是否会起作用,更多的是关于更广泛的随机数概念。我也没有考虑密码学,尽管它可能很有趣。我也不担心铸造等。
只是为了解释我的想法(已被指出完全错误,但这就是我问的原因) 我想如果我从15个Random.Next(0,n)操作中加入一系列结果,获得一个真正随机数的几率会大于我只做过一次这样的操作。据说这是一个错误的假设,我很感激回答我的问题的时间。
答案 0 :(得分:2)
不,它不再是随机的,不,它甚至不适合Int32
的范围。 999,999,999,999,999(15位)&gt; int.MaxValue
。
如果您对Random
的随机性不满意,很可能您(a)使用错误或(b)需要more cryptographically secure。