Merkwürdiger Fehler bei rand()[gelöst]
-
Hi,
ich hab vor kurzem angefangen mit C++ zu programmieren und Probiere gerade ein bischen mit zufallszahlen herum. Dabei bin ich auf einen sehr merkwürdigen Fehler gestoßen den ich mir nicht erklären kann.
Meinen Zufallsgenerator habe ich mit
srand ((unsigned)time(NULL));
initialisiert und will mit
int tmp=1+(rand()%1000000)
Zufallszahlen von 1-1Mio ausgeben. Der tmp=rand() Befehl steht in einer schleife die 1Mio mal durchlaufen werden soll die Zahlen werden verglichen und ein Array zählt die Zahlen der verschiedenen 100tausender bereiche hoch. Soweit so gut, nur leider spuckt der Zufallsgenerator nur Zahlen bis ca 35tausend aus und nicht bis 1Mio. Woran liegt das? Das Int kann ja Zahlen die 1Mio übersteigen fassen.
EDIT:
OK hab eben die Lösung gefunden das Rand nur Zahlen bis 32767, das löst meine Frage, aber da komtm direkt die nächste, was tut man wenn man größere Zahlen braucht? Gibt es dafür eine Möglichkeit?
-
jap
32767 sieht mir nach unsigend short aus !int tmp = (rand() + (rand() << 16) + 1) % 100000;
-
Danke, der Anstoß war sehr hilfreich.
-
-
Hallo
Außerdem gibts es da noch einen ausführlichen Artikel über Zufallsgenerierung in unserem Forumsmagazin.
bis bald
akari
-
Ja den hab ich hinterher auch noch gefudnen und gelesen.