Zufallszahl C++

Hi Leute,

ich bin neu in der Programmierszene :wink: und bin gerade dabei C++ zu lernen. In dem Buch mit dem ich lerne, ist eine Übungsaufgabe um eine Zufallszahl mit Hilfe der Funktion rand() (was rand() macht, habe ich verstanden :)) zu erstellen.
Laut dem Buch liefert rand() eine Zufallszahl zwischen 0 und 32767. Um den Bereich der Zufallszahl einzugrenzen wird mit Modulo gearbeitet.
Um eine Zahl zischen 1 und 50 zu erhalten schreibt man also:
Code:
int Zahl = (rand()%50)+1
Was ich jedoch nicht verstehe ist, wie man mit Modulo den Bereich eingrenzt, denn Modulo gibt ja immer den Rest aus und wenn ich 32767/50 teile und mir den Rest ausrechne komme ich auf 17.

Kann mir da jemand weiterhelfen, wie ich die Funktion zu verstehen habe, dass da eine Zufallszahl zwischen 1 und 50 herauskommt?

Vielen Dank!!

Grüße
Kaitsh

PS: Bestimmt habe ich da irgendwo einen Denkfehler, denn wenn ich es teste, funktioniert es. Jedoch verstehe ich die Logik nicht!
 
Wie groß/klein kann denn dein Rest maximal werden? ;)

Nichtsdestotrotz sollte man das nicht so machen, auch wenn es dein Buch vorschlägt. Mit etwas Statistik lässt sich leicht zeigen, dass in bestimmten Fällen keine Gleichverteilung der generierten Zufallszahlen herrscht. Aus Zeitmangel spare ich mir die Details, sondern verweise dich auf die zwei folgenden Links, die du dir in jedem Fall - gerade wenn es um Sicherheitssoftware geht, bei der starke Zufallszahlen notwendig sind - durchlesen solltest:

1) Eternally Confuzzled - Using rand()
2) Misconceptions about rand()
 
Zurück
Oben