同時建立具有不同種子的多個隨機類

同時建立的兩個 Random 類將具有相同的種子值。

使用 System.Guid.NewGuid().GetHashCode() 即使在同一時間也可以獲得不同的種子。

Random rnd1 = new Random();
Random rnd2 = new Random();
Console.WriteLine("First 5 random number in rnd1");
for (int i = 0; i < 5; i++)
    Console.WriteLine(rnd1.Next());

Console.WriteLine("First 5 random number in rnd2");
for (int i = 0; i < 5; i++)
    Console.WriteLine(rnd2.Next());

rnd1 = new Random(Guid.NewGuid().GetHashCode());
rnd2 = new Random(Guid.NewGuid().GetHashCode());
Console.WriteLine("First 5 random number in rnd1 using Guid");
for (int i = 0; i < 5; i++)
    Console.WriteLine(rnd1.Next());
Console.WriteLine("First 5 random number in rnd2 using Guid");
for (int i = 0; i < 5; i++)
    Console.WriteLine(rnd2.Next());

實現不同種子的另一種方法是使用另一個 Random 例項來檢索種子值。

Random rndSeeds = new Random();
Random rnd1 = new Random(rndSeeds.Next());
Random rnd2 = new Random(rndSeeds.Next());

這也可以通過僅設定 rndSeeds 的種子值來控制所有 Random 例項的結果。所有其他例項將從該單個種子值確定性地匯出。