當我執行下面的代碼時,我總是選擇相同的顏色。爲什麼Random會始終進行相同的選擇?
static void Main(string[] args)
{
string[] Colors = new string[10] { "Red", "Yellow", "Green", "Blue", "Purple", "White", "violet", "orange", "indigo", "blue" };
for (int i = 0; i < 13; i++)
{
Random rnd = new Random();
int code = rnd.Next(0, 9);
string Color = Colors[code];
Console.WriteLine(Color);
}
Console.ReadLine();
}
但是,如果Random rnd = new Random();'在循環外創建,那麼結果是唯一的。如果循環以更快的速度執行,那麼輸出將是相同的。假設我在for循環中執行了一些數據庫插入操作,結果將是不同的(隨機的)(使用斷點的逐步執行也會導致隨機選擇)。
真的不可能在這麼短的時間內提供不同的種子嗎?
你確切的問題靜態對象Random'](http://msdn.microsoft.com/en-us/library/h343ddh9.aspx)。 「隨機」實例默認採用系統時間播種。你的循環速度足夠讓他們擁有相同的種子。爲什麼每次迭代都會生成一個新的RNG? – Carsten 2013-03-25 09:54:36
@阿蘭我只看到它!在我受到攻擊之前請關閉它。我無法刪除它 - 已經回答 – 2013-03-25 09:55:13
@Carsten我剛試過!但是,看到它 – 2013-03-25 09:56:32