Hallo,
hab da mal ne frage…
wir sollen einen ein Lotto Generator programmieren, der
ZUFALLSZAHLEN von 1 bis 49 erzeugt!
und ich weis auch schon das der befehl rand()%49 zufallszahlen
bis 49 erzeugt…
0 bis 48
hier is jetzt aber die frage ob da die null
auch mit drinne is(bei lotto etwas schlecht)!
wenn die null dabei is was wäre dann eine alternative???
habe von kollegen gehört rand()%49+1 geht, aber warum??? kann
mir das jemand mal genau erklären???
Das kannst Du generalisieren, etwa so:
...
int zufallsauswahl(int minimum, int maximum)
{
int bereich = maximum - minimum + 1;
int zahl = minimum + ( rand() % bereich );
return zahl;
}
...
Wenn Du das mit zufallsauswahl(1, 49)
aufrufst, dann bekommt „Bereich“ den Wert 49,
„zahl“ erhält (s.o.) Werte von 0 bis 48, darauf
addierst Du wieder das minimum (hier => 1) und
alles ist so wie Du es brauchst.
Aber!
Bei Deinem „Lotto“ kannst Du ja nicht einfach Zufallszahlen
ermitteln sondern mußt „exakt 6 Samples S aus einer Menge M
von 49 Elementen auswählen“.
Dazu baust Du Dir ein Feld der Länge M (49) in das
Du die tatsächlichen Elemente einträgst (Zahlen 1…49).
Nun vermischst/vertauschst Du die Elemente des Feldes
sehr oft miteinander. Jetzt kannst Du die ersten S Elemente
des Feldes als Deine „Ziehung“ Auswerten.
Grüße
CMБ