Zufallsgenerator



  • Hallöchen

    Ich möchte Zufallszahlen im Bereich von 70 - 80, 40 - 120 und 0 - 160 erzeugen.
    Zuerst initialisiere ich den Zufallsgenerator

    srand(time(NULL));
    

    Dann folgt die Berechnung

    a = rand() % (80 - 70) +70;
    

    Das ganze nochmal mit den anderen Zahlen an anderer Stelle.

    Soweit so gut, nun zu meinem Problem. Für die ersten beiden Zahlengruppen verhalten sich die Zufallszahlen wie eine Grade. Bei jedem neuem aufruf (es werden im Programmdurchlauf merfach Zufallszahlen erzeugt) steigt die Zufallszahl um einen, meist ähnlichen Wert. Sobald der Maximalwert (hier 80) überschritten wird, geht es von vorne los.
    Und währe das nicht schon genug, funktioniert das ganze mit dem letzten Zahlenpaar (0-160) gar nicht, der "Zufallswert" ist immer 0.

    Ich würde jetzt gerne wissen warum das so ist und wie ich das Problem löse.

    MfG feps



  • feps schrieb:

    Ich würde jetzt gerne wissen warum das so ist

    Du hast einen Bug in deinem Programmcode.

    und wie ich das Problem löse.

    Du behebst den Bug oder postest den ganzen relevanten Code.



  • Die Zufallszahlen von rand() sind von sehr schlechter Qualität.

    Wenn dein Compiler c++11 unterstützt, dann nimm z.B. std::mt19937



  • Ramanujan schrieb:

    Die Zufallszahlen von rand() sind von sehr schlechter Qualität.

    Das ist hier nicht das Problem, vom Auge merkt man nicht, dass die Qualität schlecht ist.



  • Hallo feps,

    du darfst den srand()-Aufruf nur einmal (zu Beginn der main-Funktion) durchführen.


Anmelden zum Antworten