Zoeken…


Syntaxis

  • Willekeurig()

  • Willekeurig (in zaad)

  • int Volgende ()

  • int Next (int maxValue)

  • int Next (int minValue, int maxValue)

parameters

parameters Details
Zaad Een waarde voor het genereren van willekeurige getallen. Indien niet ingesteld, wordt de standaardwaarde bepaald door de huidige systeemtijd.
MINVALUE Gegenereerde getallen zullen niet kleiner zijn dan deze waarde. Als deze niet is ingesteld, is de standaardwaarde 0.
maximum waarde Gegenereerde getallen zullen kleiner zijn dan deze waarde. Als deze niet is ingesteld, is de standaardwaarde Int32.MaxValue .
winstwaarde Retourneert een getal met willekeurige waarde.

Opmerkingen

De willekeurige seed die door het systeem wordt gegenereerd, is niet bij elke andere run hetzelfde.

Zaden die tegelijkertijd worden gegenereerd, kunnen hetzelfde zijn.

Genereer een willekeurige int

Dit voorbeeld genereert willekeurige waarden tussen 0 en 2147483647.

Random rnd = new Random();
int randomNumber = rnd.Next();

Genereer een Random double

Genereer een willekeurig getal tussen 0 en 1.0. (exclusief 1.0)

Random rnd = new Random();
var randomDouble = rnd.NextDouble();

Genereer een willekeurige int in een bepaald bereik

Genereer een willekeurig getal tussen minValue en maxValue - 1 .

Random rnd = new Random();
var randomBetween10And20 = rnd.Next(10, 20);

Telkens opnieuw dezelfde reeks willekeurige getallen genereren

Wanneer u Random instanties met hetzelfde seed maakt, worden dezelfde nummers gegenereerd.

int seed = 5;
for (int i = 0; i < 2; i++)
{
   Console.WriteLine("Random instance " + i);
   Random rnd = new Random(seed);
   for (int j = 0; j < 5; j++)
   {
      Console.Write(rnd.Next());
      Console.Write(" ");
   }

   Console.WriteLine();
}

Output:

Random instance 0
726643700 610783965 564707973 1342984399 995276750
Random instance 1
726643700 610783965 564707973 1342984399 995276750

Maak meerdere willekeurige klassen tegelijk met verschillende zaden

Twee willekeurige klassen die tegelijkertijd worden gemaakt, hebben dezelfde seed-waarde.

System.Guid.NewGuid().GetHashCode() kan zelfs in dezelfde tijd een andere seed krijgen.

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

Een andere manier om verschillende zaden te bereiken, is door een andere instantie Random te gebruiken om de zaadwaarden op te halen.

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

Dit maakt het ook mogelijk om het resultaat van alle Random instanties te beheren door alleen de seed-waarde voor de rndSeeds . Alle andere instanties zullen deterministisch worden afgeleid van die enkele seed-waarde.

Genereer een willekeurig karakter

Genereer een willekeurige letter tussen a en z door de overbelasting Next() voor een gegeven bereik van getallen en converteer vervolgens de resulterende int naar een char

Random rnd = new Random();
char randomChar = (char)rnd.Next('a','z'); 
//'a' and 'z' are interpreted as ints for parameters for Next()

Genereer een getal dat een percentage is van een maximale waarde

Een veel voorkomende behoefte aan willekeurige getallen om een getal te genereren dat X% van een maximale waarde is. dit kan worden gedaan door het resultaat van NextDouble() als een percentage te behandelen:

var rnd = new Random();
var maxValue = 5000;
var percentage = rnd.NextDouble();
var result = maxValue * percentage; 
//suppose NextDouble() returns .65, result will hold 65% of 5000: 3250.


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow