Purer Zufall???



  • Hallo zusammen !
    Mein Problem ist , dass eine Zufallszahl,die ich auf dem Bildschirm
    ausgebe bei jedem compilieren und ausführen die selbe ist.
    Und dass zufällig 10 mal hintereinander die selbe Zahl initialisiert wird erscheint mir unwarscheinlich.
    Weis nicht was ich falsch gemacht haben könnte:

    #include <iostream>
    #include <stdlib.h>
    using namespace std;

    int main() {
    int x;
    int y=3;

    srand(y);
    x=rand();
    cout<<x<<endl;
    }

    Hat iregendjemand eine Idee?



  • DilBahadur schrieb:

    Mein Problem ist , dass eine Zufallszahl,die ich auf dem Bildschirm ausgebe bei jedem compilieren und ausführen die selbe ist.

    Weil dus explizit so programmiert hast dass es das tut. Schau dir mal an was srand() tut...



  • Die Funktion srand() initialisiert den Zufallsgenerator mit einem Startwert, auf dessen Basis die Zufallswerte berechnet werden. Gleicher Anfangswert, gleiche Werte. Man kann dieses Problem relativ einfach umgehen, indem man das seed mit der aktuellen Zeit initialisiert:

    srand( time(NULL) );
    

    Um die Funktion time() nutzen zu können musst du noch ein #include <ctime> machen.



  • Und in C++ bitte cstdlib statt stdlib.h. Dann sind die Funktionen aber in std::



  • stell dir rand() so vor:
    es kommen folgende zahlen raus: 7, 2, 24, 353, 1, 46, 3, 35...

    so und der start wert bedeutet einfach dass eben die startwert zahl einfach dadrauf addiert wird (ganz simpel asugedrückt)
    irgendwo wird da noch ein modulo mit einspielen...

    und deshalb gleicher startwert --> gleiches resultat





  • Danke,
    damit wäre mein Problem gelöst, und ich habe sogar verstanden woran es lag! 🙂



  • Skym0sh0 schrieb:

    so und der start wert bedeutet einfach dass eben die startwert zahl einfach dadrauf addiert wird (ganz simpel asugedrückt)

    Es wird nichts auf den Zufallswert addiert. Der Startindex wird entsprechend verschoben.


Log in to reply