Suche…


Syntax

  • Zufällig()

  • Zufällig (int Seed)

  • int Next ()

  • int Next (int maxValue)

  • int Next (int minValue, int maxValue)

Parameter

Parameter Einzelheiten
Samen Ein Wert zum Generieren von Zufallszahlen. Wenn nicht festgelegt, wird der Standardwert von der aktuellen Systemzeit bestimmt.
minValue Generierte Zahlen sind nicht kleiner als dieser Wert. Wenn nicht festgelegt, ist der Standardwert 0.
maxValue Die generierten Zahlen sind kleiner als dieser Wert. Wenn nicht festgelegt, lautet der Standardwert Int32.MaxValue .
Rückgabewert Gibt eine Zahl mit zufälligem Wert zurück.

Bemerkungen

Der vom System generierte Zufallsstartwert ist bei jedem Durchlauf nicht gleich.

Samen, die zur gleichen Zeit erzeugt werden, können gleich sein.

Erzeugen Sie ein zufälliges int

In diesem Beispiel werden Zufallswerte zwischen 0 und 2147483647 generiert.

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

Erzeugen Sie ein zufälliges Doppel

Erzeugen Sie eine Zufallszahl zwischen 0 und 1,0. (nicht einschließlich 1.0)

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

Generiere ein zufälliges int in einem bestimmten Bereich

Erzeugen Sie eine Zufallszahl zwischen minValue und maxValue - 1 .

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

Immer wieder die gleiche Folge von Zufallszahlen erzeugen

Beim Erstellen von Random mit demselben Startwert werden dieselben Zahlen generiert.

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

Ausgabe:

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

Erstellen Sie mehrere zufällige Klassen mit unterschiedlichen Startwerten gleichzeitig

Zwei zufällige Klassen, die gleichzeitig erstellt werden, haben den gleichen Startwert.

Das Verwenden von System.Guid.NewGuid().GetHashCode() kann sogar gleichzeitig einen anderen System.Guid.NewGuid().GetHashCode() erhalten.

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

Eine andere Möglichkeit, verschiedene Startwerte zu erhalten, besteht darin, eine andere Random zum Abrufen der Startwerte zu verwenden.

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

Dies macht es auch möglich , das Ergebnis aller zu steuern Random , indem nur der Startwert für die Einstellung rndSeeds . Alle anderen Fälle werden deterministisch von diesem einzelnen Startwert abgeleitet.

Erzeugen Sie ein zufälliges Zeichen

Generieren Sie einen zufälligen Buchstaben zwischen a und z indem Sie Next() für einen bestimmten Zahlenbereich verwenden und dann das resultierende int in ein char konvertieren

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

Generieren Sie eine Zahl, die einen Prozentsatz eines Maximalwerts darstellt

Eine häufige Notwendigkeit für Zufallszahlen ist es, eine Zahl zu generieren, die X% eines maximalen Werts ist. Dies kann durch Behandeln des Ergebnisses von NextDouble() in Prozent erfolgen:

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow