Wie mache ich Zufallszahlen innerhalb eines Bereichs?
266
Du kannst es versuchen
Random r = new Random();
int rInt = r.Next(0, 100); //for ints
int range = 100;
double rDouble = r.NextDouble()* range; //for doubles
Schau es dir an
Random Class , Random.Next-Methode (Int32, Int32) und Random.NextDouble-Methode
double rDouble = (r.NextDouble()*2)-1.0;
Random()
verwendet einen zeitabhängigen Startwert, aber das explizite Ausschreiben ist für die Lesbarkeit besser.Versuchen Sie es mit dem folgenden Code.
quelle
Etwas wie:
quelle
DateTime.Now.Millisecond
?Random
ist bereits mit einem Systemwert geimpft undMillisecond
ist nur eine Zahl zwischen 0 und 999. Wenn dieses Zeilenpaar im Code immer zusammen wäre, gäbe es nur 1000 mögliche Werte, da der Startwertrnd.Next
jedes Mal zurückgesetzt wird. Gleicher Samen rein, gleiche Zufallszahl raus. Ich würde den manuellen Samen weglassen.Environment.TickCount
.Verwenden:
quelle
Wenn Sie für zukünftige Leser eine Zufallszahl in einem Bereich wünschen, verwenden Sie den folgenden Code:
C # Zufälliges Doppel zwischen min und max
Codebeispiel
quelle
return new Random().NextDouble() * (maxNumber - minNumber) + minNumber;
Neben der Zufallsklasse , die ganze und doppelte Zahlen generiert, sollten Sie Folgendes berücksichtigen:
Stapelüberlauffrage Generierung von (pseudo) zufälligen beschränkten Werten von (U) Int64 und Decimal
C # RandomProvider-Klasse
quelle
Hier ist die aktualisierte Version von Darrelk Antwort . Es wird mit C # -Erweiterungsmethoden implementiert . Bei jedem Aufruf dieser Methode wird kein Speicher ( new Random () ) zugewiesen .
Verwendung (stellen Sie sicher, dass Sie den Namespace importieren, der die RandomExtensionMethods-Klasse enthält):
quelle