2017-01-13 4 views
-4

Ich möchte 10 'zufällige' Zahlen generieren, aber sie müssen eindeutig sein. Ich habe etwas versucht, aber gibt es jemanden, der mir mit etwas Besserem helfen kann?Erzeuge 10 eindeutige ganze Zahlen in C# für Unity

Mein Code:

List<int> ran = new List<int>(); 
Random rnd = new Random(); 
public static int randomValue; 

int tempRandom; 
public int randomNum() 
{ 
    if(ran.Count == 0) 
    { 
     ran.Add(0); 
     ran.Add(1); 
     ran.Add(2); 
     ran.Add(3); 
     ran.Add(4); 
     ran.Add(5); 
     ran.Add(6); 
     ran.Add(7); 
    } 
    tempRandom = rnd.Next(0, ran.Count); 
    randomValue = ran[randomValue]; 
    ran.RemoveAt(tempRandom); 

    return randomValue; 
} 
+0

Sie benötigen also 10 eindeutige ganze Zahlen zwischen 1 und 10? –

+2

Das sollte dir helfen: http://stackoverflow.com/questions/273313/randomize-a-listt – hellogoodnight

+0

10 einzigartige ganze Zahlen zwischen 1 und 10 ... Ich denke an 10 mögliche Zahlen ... –

Antwort

1

Ist das, was Sie sagen wollen? Wenn nicht, bitte spezifizieren Sie, wie Sie weiter meinen. Dieser Code sollte Ihnen eine Nummer zwischen 1-10 geben, die noch nicht verwendet wurde. Dieser Code funktioniert nur 10 Mal.

Random rnd = new Random(); 
List<int> usedNumbers = new List<int>(); 


public int RandomNum(){ 
    int number; 
    do { 
     number = rnd.Next(1, 10); 
    } while(usedNumbers.IndexOf(number) == -1); 

    usedNumbers.Add(number); 

    return number; 
} 
0

Gerade Antwort auf Ihre Frage (nicht in Bezug auf, wenn Sie tatsächlich wollen, was Sie fordern):

Random.Range(int.MinValue, int.MaxValue); 

Dies erzeugt einfach eine zufällige int im Bereich der ganzen Zahlen. Bei 10 Zahlen ist die Wahrscheinlichkeit von Duplikaten so gering, dass jede Zahl eindeutig ist.