可能重複:
Random number generator only generating one random number只有通過調試器逐步完成代碼才能正確運行代碼?
我有點困惑這個幾分鐘前。我有以下代碼:
public blockType generateRandomBlock()
{
Random random = new Random();
int makeBlockOfType = random.Next(0, 100);
blockType t = blockType.normal;
if (makeBlockOfType <= 80 && makeBlockOfType >= 60)
{
t = blockType.blue;
}
else if (makeBlockOfType > 80 && makeBlockOfType <= 95)
{
t = blockType.orange;
}
else if (makeBlockOfType > 95 && makeBlockOfType <= 100)
{
t = blockType.green;
}
return t;
}
相當簡單,它返回基於隨機生成的數字的enum
值(基於系統時間)。不幸的是,由於某些奇怪的原因,我將所有塊都封裝成一種顏色或其他顏色,即使這種情況對於每一個塊都會投入遊戲中。然而,當我通過這個步驟與調試器,然後看到一些運行後的結果,我看到塊多,現在根據所提供的機會着色。我有點困惑,爲什麼會發生這種情況。
對於這個我使用MonoGame它採用了單聲道編譯器,而不是微軟的一個。這可能是問題嗎?我試圖內嵌把這段代碼到構造函數從它被稱爲在那裏,但我得到了同樣的結果(我猜編譯器內聯代碼反正)。
我試圖重新啓動Visual Studio它分開,而不是讓運行做的構建;沒有變化。
任何建議和幫助是極大的讚賞!
嘗試移動隨機生成的方法的,應該幫助。 –
'新的隨機()'種子使用時間,它保持不變幾毫秒。 – CodesInChaos
它在調試中起作用的原因是調用之間有時間,而Random實際上獲得了不同的種子。 – Archy