可能重複:
Why does this Random Number Generator not random?爲什麼不隨機()隨機?
我有這個測試程序:
static void Main(string[] args)
{
var randomNumbers = new Dictionary<int, int>();
foreach (var s in Enumerable.Range(1, 500))
{
var rand = Rand5();
if (!randomNumbers.ContainsKey(rand))
randomNumbers.Add(rand, 1);
else
randomNumbers[rand] += 1;
}
randomNumbers
.ToList()
.ForEach(x => Console.WriteLine("{0}: {1}", x.Key, x.Value));
Console.ReadLine();
}
static int Rand5()
{
System.Threading.Thread.Sleep(1);
return new Random().Next(1, 6);
}
如果我註釋掉System.Threading.Thread.Sleep(1);
,我得到
5: 500
但是,如果我取消註釋該行,我會得到隨機數。
2: 87
4: 94
1: 116
5: 108
3: 95
爲什麼代碼行很重要?謝謝!
我認爲將這些問題標記爲愚蠢是徒勞無益的,因爲大概三分之一*隨機*標記的問題都是相同的問題。 – Joey 2011-01-27 16:49:40