【发布时间】:2011-04-07 03:47:19
【问题描述】:
看着another question of mine,我意识到从技术上讲,没有什么可以阻止这个算法无限期地运行。 (即:它永远不会返回)
因为rand.Next(1, 100000); 理论上可能会继续生成相同的值。
出于好奇;我将如何计算发生这种情况的概率?我认为它会非常小?
其他问题的代码:
Random rand = new Random();
List<Int32> result = new List<Int32>();
for (Int32 i = 0; i < 300; i++)
{
Int32 curValue = rand.Next(1, 100000);
while (result.Exists(value => value == curValue))
{
curValue = rand.Next(1, 100000);
}
result.Add(curValue);
}
【问题讨论】:
-
实际上:没有。几率急剧下降非常。相关的数学也用于生日悖论。见en.wikipedia.org/wiki/Birthday_paradox