Looking for c# Keywords? Try Ask4Keywords

C# Language Создавать несколько случайных классов с разными семенами одновременно


пример

Два случайных класса, созданные одновременно, будут иметь одинаковое начальное значение.

Использование 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());

Это также позволяет контролировать результат всех Random экземпляров, устанавливая только начальное значение для rndSeeds . Все остальные экземпляры будут детерминистически получены из этого единственного значения семени.