C# Random 隨機數直重複問題
分類
建立時間: 2022年6月6日 10:53
更新時間: 2022年6月6日 10:53
說明
對於初學者來說,想要隨機產生一個數時大概會這樣做
Random random = new();
random.Next();
但如果我在迴圈執行時,很有可能會發生重複的問題
for (int i = 0; i < 10; i++)
{
Random ran = new();
Console.WriteLine(ran.Next());
}
如果你沒有發生重複,來試試看這個就比較有感了
for (int i = 0; i < 10; i++)
{
Random ran = new(12345);
Console.WriteLine(ran.Next());
}
這個問題很有可能在實例類別時發生
RandomNumber.cs
using System;
namespace RandomTest
{
public class RandomNumber
{
public Random random = new();
}
}
program.cs
for (int i = 0; i < 10; i++)
{
RandomNumber ran = new();
}
原因
上面 12345 是 Random 的種子
預設會帶入系統的時間,所以當執行很快的時候,很有可能發生重複的問題
解決辦法
共用 Random 實例
Random ran = new();
for (int i = 0; i < 10; i++)
{
Console.WriteLine(ran.Next());
}
如果是類別,可以將 Random 設成 static
RandomNumber.cs
using System;
namespace RandomTest
{
public class RandomNumber
{
public static Random random = new();
}
}
觀看次數: 1376
c#random重複隨機亂數
一杯咖啡的力量,勝過千言萬語的感謝。
支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!