同时创建具有不同种子的多个随机类
同时创建的两个 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
实例的结果。所有其他实例将从该单个种子值确定性地导出。