我試圖在我for循環中每次調用RandomNumber方法時生成一個不同的隨機數。現在,它每次都返回相同的數字。RandomNumber方法每次都會返回相同的數字
這是我RandomNumber方法:
private int RandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
}
這是我使用它在上下文:(這只是因爲我一直在努力得到它的工作搞亂有點亂....)
for (int i = 0; i < charsRaw.Length; i++)
{
int max = charsRaw.Length - 1;
int rand = 0;
rand = RandomNumber(0, max);
charsNew[i] = charsRaw[rand];
text2 += charsNew[i];
}
我似乎無法讓它在每次使用for循環調用時返回不同的值。
雖然,當我在text2 + = charsNew [i]之後插入一個MessageBox.Show(rand.ToString())時,它每次都給我一個不同的值,並按照我的意圖工作。奇怪。
謝謝! 埃裏克
謝謝!這工作! – Eric 2009-06-17 03:21:40
最後一段有點誤導。新的Random()就是這樣做的,即用當前時間爲發生器播種。既然你在一個緊密的循環中做了這個,你會得到許多相同的實例,當然這些實例會產生相同的序列。用現在的時間手動播種並不能使這裏的事情變得更好。此外,你會在種子中獲得非常多的線性依賴關係,這對大多數生成器的隨機性來說是一件壞事(參見http://portal.acm.org/citation.cfm?doid=1276927.1276928) – Joey 2009-06-17 04:55:44