C# Language
Zufallszahlen in C # generieren
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.