Szukaj…


Składnia

  • Losowy()

  • Random (int Seed)

  • int Next ()

  • int Dalej (int maxValue)

  • int Next (int minValue, int maxValue)

Parametry

Parametry Detale
Nasionko Wartość do generowania liczb losowych. Jeśli nie zostanie ustawiony, wartość domyślna jest określana przez bieżący czas systemowy.
minValue Wygenerowane liczby nie będą mniejsze niż ta wartość. Jeśli nie jest ustawiony, wartością domyślną jest 0.
maksymalna wartość Wygenerowane liczby będą mniejsze niż ta wartość. Jeśli nie zostanie ustawiony, wartością domyślną jest Int32.MaxValue .
zwracana wartość Zwraca liczbę o losowej wartości.

Uwagi

Losowe ziarno generowane przez system nie jest takie samo w każdym innym przebiegu.

Nasiona wytworzone w tym samym czasie mogą być takie same.

Wygeneruj losowy int

Ten przykład generuje losowe wartości od 0 do 2147483647.

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

Generuj losowe podwójne

Wygeneruj losową liczbę od 0 do 1,0. (bez 1.0)

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

Wygeneruj losową liczbę całkowitą w danym zakresie

Wygeneruj losową liczbę między minValue i maxValue - 1 .

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

Generowanie tej samej sekwencji liczb losowych w kółko

Podczas tworzenia instancji Random z tym samym ziarnem zostaną wygenerowane te same liczby.

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

Wynik:

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

Twórz jednocześnie wiele losowych klas z różnymi nasionami

Dwie losowe klasy utworzone w tym samym czasie będą miały tę samą wartość początkową.

Za pomocą System.Guid.NewGuid().GetHashCode() może uzyskać inne ziarno nawet w tym samym czasie.

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

Innym sposobem na uzyskanie różnych nasion jest użycie innej instancji Random do pobrania wartości nasion.

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

Umożliwia to również kontrolowanie wyniku wszystkich Random instancji poprzez ustawienie tylko wartości rndSeeds dla rndSeeds . Wszystkie pozostałe wystąpienia będą deterministycznie wyprowadzone z tej pojedynczej wartości początkowej.

Wygeneruj losową postać

Wygenerować losowy nas między i a z przy użyciu Next() przeciążenia dla danego zakresu numerów, a następnie przekształcenie otrzymanego int na char

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

Wygeneruj liczbę, która jest procentem wartości maksymalnej

Częstą potrzebą liczb losowych jest generowanie liczby stanowiącej X% pewnej maksymalnej wartości. można tego dokonać traktując wynik NextDouble() jako 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow