Antworten:
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
Random()
verwendet einen zeitabhängigen Startwert, aber das explizite Ausschreiben ist für die Lesbarkeit besser.
Versuchen Sie es mit dem folgenden Code.
Random rnd = new Random();
int month = rnd.Next(1, 13); // creates a number between 1 and 12
int dice = rnd.Next(1, 7); // creates a number between 1 and 6
int card = rnd.Next(52); // creates a number between 0 and 51
Etwas wie:
var rnd = new Random(DateTime.Now.Millisecond);
int ticks = rnd.Next(0, 3000);
DateTime.Now.Millisecond
?
Random
ist bereits mit einem Systemwert geimpft und Millisecond
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 Startwert rnd.Next
jedes Mal zurückgesetzt wird. Gleicher Samen rein, gleiche Zufallszahl raus. Ich würde den manuellen Samen weglassen.
Environment.TickCount
.
Verwenden:
Random r = new Random();
int x= r.Next(10);//Max range
Wenn Sie für zukünftige Leser eine Zufallszahl in einem Bereich wünschen, verwenden Sie den folgenden Code:
public double GetRandomNumberInRange(double minNumber, double maxNumber)
{
return new Random().NextDouble() * (maxNumber - minNumber) + minNumber;
}
return new Random().NextDouble() * (maxNumber - minNumber) + minNumber;
Neben der Zufallsklasse , die ganze und doppelte Zahlen generiert, sollten Sie Folgendes berücksichtigen:
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 .
public static class RandomExtensionMethods
{
public static double NextDoubleRange(this System.Random random, double minNumber, double maxNumber)
{
return random.NextDouble() * (maxNumber - minNumber) + minNumber;
}
}
Verwendung (stellen Sie sicher, dass Sie den Namespace importieren, der die RandomExtensionMethods-Klasse enthält):
var random = new System.Random();
double rx = random.NextDoubleRange(0.0, 1.0);
double ry = random.NextDoubleRange(0.0f, 1.0f);
double vx = random.NextDoubleRange(-0.005f, 0.005f);
double vy = random.NextDoubleRange(-0.005f, 0.005f);
double rDouble = (r.NextDouble()*2)-1.0;