C# Language Créer plusieurs classes aléatoires avec différentes graines simultanément


Exemple

Deux classes aléatoires créées en même temps auront la même valeur de départ.

En utilisant System.Guid.NewGuid().GetHashCode() peut obtenir une graine différente même dans le même temps.

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());

Une autre façon d'obtenir différentes valeurs consiste à utiliser une autre instance Random pour récupérer les valeurs de départ.

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

Cela permet également de contrôler le résultat de toutes les instances Random en définissant uniquement la valeur de départ pour les rndSeeds . Toutes les autres instances seront dérivées de manière déterministe de cette valeur de graine unique.