Huhu allerseits!
Ich habe eine Frage bezüglich Zufallszahlen in C#. Bekannt ist ja, dass man über
Instanz, also z.B. Random rnd = new Random(); Zufallszahlen erstellen kann.
Zufallszahlen zwischen beispielsweise 5 und 25 werden ja mit rnd(5, 25) generiert.
Ist es nun irgendwie möglich, dass Zufallszahlen, wie im Beispiel zwischen 5 und 25,
die schon ausgelesen wurden, nicht mehr "ausgewählt" werden?
Also z.B. krieg ich mit rnd(5, 25) die zufällig generierte Zahl 10. Jetzt möchte ich, dass
ich diese Zahl in Zukunft nicht mehr erhalte, bis alle Zahlen zwischen 5 und 25 "aufgelistet" wurden. Geht das irgendwie?
Für Antworten bin ich jetzt schon dankbar 🙂
Grüsse, Malleth
Hallo,
sowas gibt es nicht, dann wäre es keine Zufallzahlen 🙂.
Aber mit einer kleinen Schleife und einem (z.B) ArrayList kann man das Problem sofort lösen.
Gruss,
Boris
Hallo,
hier ein kleines Beispiel:
int iZufall = 0;
System.Random rnd = new Random();
List<int> list1 = new List<int>();
list1.Clear();
for (int I = 0;I < (25-5);I++)
{
list1.Add(I+5);
}
while (list1.Count > 0)
{
iZufall = rnd.Next(5, 25);
for (int K = 0; K < list1.Count; K++)
{
if (list1[K] == iZufall)
{
list1.RemoveAt(K);
Console.WriteLine(iZufall);
}
}
}
Gruß Pegasus2
also du meinst, alle zahlen, die zufällig generiert wurden in einen array packen und den dann vergleichen oder überprüfen, ob er schon vorhanden ist?
--- edit ---
Danke Pegasus 🙂
Versteh ich Deine Aufgabenstellung richtig? Du willst die Zahlen von 5-25 in zufälliger Reihenfolge, ohne doppelte?
Klingt für mich als gäbe es einen wesentlich effizienteren Ansatz (Ok, bei grade mal 20 Zahlen macht das vielleicht nicht viel aus, aber es geht ja ums Prinzip...):
Einfach die gewünschten Zahlen in 'ne Liste packen und mischen... (Für's Mischen gibt's einen sehr einfachen und effizienten Ansatz, den ich gern auch noch "skizzieren" kann - einfach nachfragen)
Bart Simpson