Sök…


Syntax

  • Slumpmässig()

  • Slumpmässigt (int Seed)

  • int Nästa ()

  • int Nästa (int maxValue)

  • int Nästa (int minValue, int maxValue)

parametrar

parametrar detaljer
Utsäde Ett värde för att generera slumpmässiga nummer. Om inte inställt bestäms standardvärdet av den aktuella systemtiden.
MINVALUE Genererade nummer kommer inte att vara mindre än detta värde. Om inte inställt är standardvärdet 0.
MAXVALUE Genererade nummer kommer att vara mindre än detta värde. Om inte inställt är standardvärdet Int32.MaxValue .
returvärde Returnerar ett nummer med slumpmässigt värde.

Anmärkningar

Det slumpmässiga frö som genereras av systemet är inte detsamma i varje annan körning.

Frön som genereras på samma tid kan vara desamma.

Generera en slumpmässig int

Detta exempel genererar slumpmässiga värden mellan 0 och 2147483647.

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

Generera en slumpmässig dubbel

Generera ett slumpmässigt antal mellan 0 och 1.0. (ingår inte 1.0)

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

Generera en slumpmässig int i ett givet intervall

Generera ett slumptal mellan minValue och maxValue - 1 .

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

Genererar samma sekvens av slumpmässiga nummer om och om igen

När du skapar Random instanser med samma frö kommer samma nummer att genereras.

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

Produktion:

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

Skapa flera slumpmässiga klass med olika frön samtidigt

Två slumpmässiga klasser skapade samtidigt kommer att ha samma frövärde.

Använda System.Guid.NewGuid().GetHashCode() kan få ett annat frö även på samma gång.

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

Ett annat sätt att uppnå olika frön är att använda en annan Random instans för att hämta frövärdena.

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

Detta gör det också möjligt att kontrollera resultatet av alla Random instanser genom att bara sätta rndSeeds för rndSeeds . Alla andra instanser kommer deterministiskt att härledas från det enda frövärdet.

Generera en slumpmässig karaktär

Generera en slumpmässig bokstav mellan a och z genom att använda Next() överbelastning för ett visst antal intervall och konvertera sedan den resulterande int till en char

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

Generera ett tal som är en procentandel av ett maxvärde

Ett vanligt behov av slumpmässiga siffror för att generera ett tal som är X% av något maxvärde. detta kan göras genom att behandla resultatet av NextDouble() procent:

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow