C# Language
Generowanie liczb losowych w C #
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.