2010-11-18 40 views
2

Wie wählt man am besten eine Zufallszahl zwischen zwei Zahlen in C#?Zufallsfunktion in C#

Zum Beispiel, wenn ich einen niedrigen Wert von 23 und einen hohen Wert von 9999 habe, was wäre der richtige Code, um eine zufällige Zahl zwischen und einschließlich dieser zwei Zahlen auszuwählen? Vielen Dank im Voraus

+0

Sollte die Nummer gleichmäßig aus dem Bereich gewählt werden? –

Antwort

7

Es hängt davon ab, ob Sie für eine Ganzzahl oder ein Doppel suchen. Für eine Ganzzahl verwenden Sie Random.Next(minValue, maxValue):

Gibt eine Zufallszahl innerhalb eines angegebenen Bereichs zurück.

Beachten Sie, dass der minValue inklusive ist, aber der maxValue ist exklusiv.

Es gibt keine gleichwertige Methode, um ein zufälliges Double innerhalb eines bestimmten Bereichs zu wählen. Stattdessen sollten Sie die Methode NextDouble verwenden, um eine Zufallszahl zwischen 0.0 und 1.0 auszuwählen und dann eine lineare Transformation zu verwenden, um den Bereich zu erweitern, zu reduzieren und/oder zu übersetzen.

+0

Sind Sie sicher? Ich schreibe diesen Code in VS, aber es gibt kein Sub wie "Next" in der Zufallsfunktion. Tnx für Ihre Hilfe – Amra

+0

@Eva: Es ist eine Instanz-Methode - Sie benötigen ein zufälliges Objekt (zum Beispiel können Sie eines erstellen, wenn Ihr Programm startet). –

+0

@Eva - Es gibt keine statische Next-Funktion, wenn das ist, was Sie versuchen, so können Sie nicht einfach Random.Next schreiben. Siehe meine Antwort für Details. –

12

die Random-Klasse wie folgt verwenden:

Random rnd = new Random(); 
rnd.Next(23, 10000); 

Vergewissern Sie sich, dass Sie nur einmal Ihre rnd Objekt initialisieren, um sicherzustellen, dass es wirklich zufällige Werte generieren für Sie.

Wenn Sie machen diese Schleife zum Beispiel:

for(int i = 0 ; i < 10; i++){ 
    Random rnd = new Random(); 
    var temp = rnd.Next(23, 10000); 
} 

Temperatur wird das gleiche jedes Mal, da das gleiche Samt das RND-Objekt zu erzeugen, verwendet wird, aber wie folgt aus:

Random rnd = new Random(); 
for(int i = 0 ; i < 10; i++){ 
    var temp = rnd.Next(23, 10000); 
} 

Es erzeugt 10 eindeutige Zufallszahlen (aber natürlich zufällig, zwei oder mehr Zahlen könnten sowieso gleich sein)

+1

+1, um das typische Problem mit 'Random' zu erklären. –

+0

Danke. Wenn ich eine zufällige Zeichenfolge aus einer Textdatei auswählen möchte, was soll ich tun? – Amra

+0

@Eva: Der einfachste Weg wäre, alle Zeilen aus der Textdatei zu lesen, sie alle zu merken und sie zu zählen und dann eine Zufallszahl basierend auf der Zählung auszuwählen. –