Der Teufel ist ein Eichhorn, oder auch der Fehler liegt im Detail. Ich wollte gestern eine zufällige Zahlenreihe mit 0 und 1 erstellen. Das Visualstudio sagt mir hierzu nutze die Random.Next(int, int) Methode, wobei der erste Integer die untere Grenze und der zweite Integer die obere Grenze definiert. Nicht mehr und nicht weniger. Also müsste folgendes doch funktionieren:
Random rnd = new Random(); int zzahl = rnd.Next(0,1);
Falsch gedacht! So bekommt man nur eines – und zwar nur Nullen. Ein Blick in die MSDN Library sorgt für Aufklärung. Dort wird nämlich, im Gegenteil zum IntelliSense vom VisualStudio, erklärt, dass die untere Grenze inklusiv und die obere Grenze exklusiv ist.
Parameter
minValueTyp: System.Int32
Die inklusive untere Grenze der zurückgegebenen Zufallszahl.
maxValue
Typ: System.Int32Die exklusive obere Grenze der zurückgegebenen Zufallszahl. maxValue muss größer oder gleich minValue sein.
Im Klartext heißt das, dass der korrekte Aufruf um Nullen und Einsen zu generieren wie folgt aussehen müsste:
Random rnd = new Random(); int zzahl = rnd.Next(0,2);
Ich hoffe, ich konnte dem ein oder anderen helfen.
Viele Grüße,
Raffi
Not a game machine. Maybe in the future it’ll do even better in those areas, but for now it’s a fantastic way to organize and listen to your music and videos, and is without peer in that regard. The iPod’s strengths are its web browsing and apps. If those sound more compelling, perhaps it is your best choice.
Ich denke, dass hinter diesem Verhalten sogar ein logischer Gedanke steckt.
Da in der Programmierung meist alles mit Null indiziert ist und somit der Index über Length – 1 angesprochen wird.
So kann z.B. auf ein zufälliges Array Element ohne groß drüber nachzudenken zugegriffen werden:
var val = arr[rnd.Next(0, arr.Length)]
Grüße
Kai
Hallo Kai,
aus dieser Warte hatte ich das noch gar nicht betrachtet. Aber das ergibt definitiv Sinn. Wieder was gelernt! Danke dafür.
Gruß,
Raffael
Auf Deutsch gesagt, man muss die 2. Zahl immer Minus 1 zählen.
Irgendwie erinnert mich das an z.B. die for Schleife, wo man auch mit einem einfachen (kleiner/größer) nur die nächst kleinere Zahl erreicht. Dort gibt es aber die Möglichkeit auf = (kleiner / größer – gleich).