Ausgabe grosser Zahlen mit rand()
-
Hallo zusammen
Ich habe ein kleines Problem, und zwar habe ich folgendes Programm geschrieben, welches mit Zufallszahlen zwischen einer Ober- und einer Untergrenze liefern soll. Das funtioniert aber nur dann, wenn die Unteregrenze nicht grösser als 5000 ist. Wenn ich z.B Untergrenze 25000 und Obergrenze 32767 mache,dann gibt mir das Programm Zahlen aus, welche grösser als 32767 sind! wenn ich das selbe mit den Zahlen 0 und 32767 mache, dann sind alle Zahlen im richtigen Bereich!
Der Code sieht wie folgt aus:#include "stdafx.h" #include <iostream> #include <conio.h> #include <time.h> #include <Windows.h> #include <WinBase.h> #include <stdio.h> #include <string> using namespace std; void main() { int gOg; int gUg; int Zufallszahl; cout << "Geben Sie die Untere Grenze ein:" << endl; cin >> gUg; cout << "Geben Sie die Obere Grenze ein:" << endl; cin >> gOg; cout << "Das sind die Zufallszahlen:" << endl; for (int i =0; i<20; i++) { Zufallszahl=(rand()%gOg+1)+gUg; cout << Zufallszahl << endl; } srand( time(NULL) ); char ch=getch (); }Ich wäre echt froh wenn mir jemand helfen könnte, und erklären würde, woran es liegen kann. Ich habe auch schon Treahs mit Zufallszahlen gefunden, jedoch keine Antwort auf diese Frage.
Vielen Dank in Voraus.
Gruss
-
Untergrenze: 15
Obergrenze: 20Zufallszahl: 19
Zufallszahl mod Obergrenze = 19
19 + Untergrenze: 34
-
Die Formel dafür lautet:
zufallszahl = min+(rand() % (max-min));
Wobei max bzw. min die Ober- bzw. Untergrenze darstellen.
Noch ein paar Anmerkungen:
-> Es mussint main()heißen,mainhat immer einintzurückzugeben und wenn dir dein Compiler das nicht ankreidet würde ich mir einen neuen holen.
-> Warum bindest du die ganzen unnützen Bibliotheken ein? rand() liegt in dercstdlib, wenn ich mich recht errinner
-> Warum initialisierst du den Zufallsgenerator persrand()nachdem du die Zufallszahlen gezogen hast?
->std::endlwürde ich nur dann benutzen, wenn ich weiß, was genau es macht und ich alle seine Funktionen benötige. Ansonsten tut es ein'\n'auch.
-
Ok Fehler erkannt! Danke für die schnelle Hilfe und die Erklärung! Top...