zufallszahlen?



  • Hallo

    Dying schrieb:

    ach ja time gehört zu

    #include <time.h>
    

    Auch wenn es nervt, aber ich würde <ctime> nehmen.

    chrische



  • @Dying: Du Depp, hör mal auf mit den scheiß Doppelposts....



  • Dying schrieb:

    srand(time(0));
    

    srand ist dann ein zufallswert jetzt musst du das auf eine variable übertragen:

    int zufall=rand()%33;
    

    rand() ist niemals zufall, auch nicht mit 'srand(time(0))'
    eigendlich müsste es 'pseudo_rand()' heissen... 😉



  • rand() ist niemals zufall, auch nicht mit 'srand(time(0))'
    eigendlich müsste es 'pseudo_rand()' heissen...

    Dann müsste es auch 'pseudo_time()' heissen 😉



  • Moin, die Lösung mit rand() hast ja gesehen, time(0) oder time(NULL) gibt dir die Zeit in Sekunden seit ich meine 1970, einfach eine Zeit, die als Einstiegswert in eine Zahlenfolge dient. Lass dir rand(1) anzeigen, 10mal in Folge, und es müsste immer der Selber Wert kommen, ebenso bei rand(2) usw. Im Mittel wirkt die Folge zufällig, hat aber den Vorteil, das die Folge rekonstruierbar ist, falls man mal etwas testet und ein Fehler nur bei einigen Werten auftritt.

    MfG Nemo



  • Dying schrieb:

    also als erstes es sind in wirklichkeit keine zufalls zahlen sondern die "zeit"
    hier wie du das schreibst:
    (einfach abschreiben)

    srand(time(0));
    

    srand ist dann ein zufallswert jetzt musst du das auf eine variable übertragen:

    int zufall=rand()%33;
    

    die 33 heißt das es nur bis 32 geht! nicht bis 33!
    wenn du keinen festen wert willst

    int zufall=rand();
    

    ich hoffe ich konnt helfen 😉

    FULL ACK 😃 😃 👍 👍



  • versuchs mit randomize();

    z.b.:

    randomize();
    
    ...
    
    z = random(8)+1;      //Zufallszahl 1 - 9
    


  • Nur soweit ich weiß, sind randomize() und random() keine Standard-Funktionen - und dürfte intern auch wieder auf srand()/rand() zurückgreifen.



  • Nur zur Ergänzung, man kann sich auch gut eigenen Rand()-Funktionen basteln. Diese Funktion z.B. gibt schöne Aussgaben:

    unsigned long Rand(const unsigned long& lRandSeed)
    {
    	return ((lRandSeed * 214013L + 2531011L) >> 16) & 0x7fff;
    }
    


  • Bin noch ziemlicher anfänger...
    wo muss ich denn das

    srand(time(0));
    

    einsetzen?
    außerdem kommt bei mir die Meldung:

    error C2501: 'srand' : Fehlende Speicherklasse oder Typbezeichner

    helft mir pls

    mfg Regire

    Edit:ok den fehler hab ich jetzt weg...
    ABER Neue Frage:
    kann ich es einstellen, dass bei jedem aufruf der variablen eine neue zahl genommen wird?

    bei der time funktion geht das anscheinend niocht, da mein compi zu schnell rechnet 😃

    EDIT EDIT EDIT EDIT EDIT EDIT EDIT EDIT EDIT EDIT EDIT EDIT EDIT EDIT EDIT EDIT

    so nach langem rumprobieren habe ich es endlich geschafft ein programm zu schreiben welches genug verschiedene Zufallszahlen erzeugt 😃

    Ich sag nochma danke an alle 🙂

    mfg Regire

    PS: diesen thread bitte /closed markieren 😉



  • Auch wenn du's schon gelöst hast, nochmal die Erklärung für alle anderen:

    Regire schrieb:

    Bin noch ziemlicher anfänger...
    wo muss ich denn das

    srand(time(0));
    

    einsetzen?
    außerdem kommt bei mir die Meldung:

    error C2501: 'srand' : Fehlende Speicherklasse oder Typbezeichner

    Du brauchst die Header <cstdlib> (für rand() und srand()) und <ctime> (für time()) bzw. zur Not ihre C-Entsprechungen.

    kann ich es einstellen, dass bei jedem aufruf der variablen eine neue zahl genommen wird?

    Ja, srand() muß nur einmal am Anfang des Programms aufgerufen, danach kannst du den Zufallsgenerator einfach laufen lassen. (srand() setzt den Startwert für den nächsten rand()-Aufruf - und wenn du 10mal in der Sekunde neu initialisierst, holst du dir jedes Mal den Startwert der selben Zufallsfolge)


Anmelden zum Antworten