Zufallszahlen



  • Hi,
    ich bin auf der Suche nach deiner random funktion, die mir zufallszahlen zwischen 0 und 1 ausgibt.
    ich habe diese gefunden:

    void my_init_random(void);
     double my_random_01(void);
     double myrnd_max;
    
    my_init_random();
    testRandom = my_random_01();
    printf("\nZufallszahl: %f\n",testRandom); 
    
    void my_init_random(void) { 
    int i,j;
     myrnd_max=(double)RAND_MAX;
     srand(time(NULL)); 
    // j=rand();
     // for(i=0;i<20;i++) {j=rand();} 
    }
    
     double my_random_01(void) { 
    return (double)rand()/myrnd_max;
     }
    

    ´
    Jedoch gibt diese Funktion linear verlaufende Zufallszahlen, zb 0.12 dann 0.24 dann 0.36, ich würde gern eine funktion haben, die auch einmal 'springt', also 0.36, dann 0.12 dann 0.24. Existiert eine Standard-Randomfunktion?
    Ist es denn normal, dass wenn ich diese zufallszahl in einer schleife habe, diese immer gleich bleibt, bis die schleife durchgearbeitet worden ist?



  • Du rusfst my_init_random zu oft auf. Rufe sie nur einmal auf, zum Beispiel am Anfang der main().



  • also, sobald ich

    void my_init_random(void) { 
    int i,j; 
     myrnd_max=(double)RAND_MAX; 
     srand(time(NULL)); 
    // j=rand(); 
     // for(i=0;i<20;i++) {j=rand();} 
    }
    

    herausnehme läuft das Programm nicht mehr, und es werden Fehler angegeben...



  • Weil deine globale Variable myrnd_max nicht mehr initialisiert ist.

    Du sollst das srand(time(NULL)); nur einmal im Programm (beim Programmstart) aufrufen.


Anmelden zum Antworten