Zufallswerte



  • Ich möchte das, wenn ich mein Programm starte, das es Zufallswörter ausgibt, die ich vorher bestimmt habe. Wie mache ich das am Besten?!





  • Nutze die rand und srand Funktion um die Zufallszaghlen zu erzeugen. Da beide den gesamten Integerbereich >0 nutzen kann man sie am bestn mit der Modulo funktion auf den gewünschten Bereich beschränken

    int j;
    j=rand()% 100;
    

    erzeugt Pseudozufallszahhlen im Bereich 0..99;

    ➡ Hier eine paar Hilfen zu rand und srand

    💡 int rand( void );

    rand returns a pseudorandom number, as described above. There is no error return.

    The rand function returns a pseudorandom integer in the range 0 to RAND_MAX. Use the srand function to seed the pseudorandom-number generator before calling rand.

    💡 void srand( unsigned int seed );
    Remarks

    The srand function sets the starting point for generating a series of pseudorandom integers. To reinitialize the generator, use 1 as the seed argument. Any other value for seed sets the generator to a random starting point. rand retrieves the pseudorandom numbers that are generated. Calling rand before any call to srand generates the same sequence as calling srand with seed passed as 1.

    ⚠ Aber Achtung, für deine Anwendung müsste es ausreichen, es sind aber keine echten Zufallszahlen sondern für jede seed in srand wird immer die selbe Folge von Zufallszahlen erzeugt, und auch die erzeugten Zahlen sind im mathematisch-physikalischen sinne nicht echt zufällig. Für deutlich bessere Zufallszahlen einfach mal nach Random Numbers googlen. ⚠



  • Modulo! is ja cool!

    ich hab das immer mit ner while schleife gemacht...
    Hätt ich doch bloss in Mathe aufgepasst *heul*



  • Wenn man srand() mit time(0) aufruft, dann bekommt man immer andere Zufallszahlen (pro Sekunde versteht sich ;)). Z. B. srand(time(0))



  • Bringt nicht immer andere Zufallswerte.

    Die Zufälligkeit folgt dem einefachen Gesetz time(0) liefert die Sekunden seit
    vergangen seit Mitternacht (00:00:00), January 1, 1970, in einer int32. D.h. du wählst diejenige feste srand sequenz aus die als Samen einer festen Folge haben. somit sind im mathematischen Sinne die Zahlen nicht mehr zufällig verteilt. Dies wir aber nur interessant wenn man sich mit Monte-Carlo Simulationen und ähnlichen Verfahren beschäftigt.
    Im Rahmen von Windowsprorammierung ist selbst die Sequenz

    srand(time(0));

    und danach beliebig oft rand() aufrufen

    hinreichend zufällig.

    Man beachte den folgenden Link
    http://www.thomas-fahle.de/pub/perl/Diverses/Zufallszahlen.html
    als Kurzeinführung
    oder google mal nach Zufallszahlen

    Habe hier eine Seite gefunden die sich mit Zufallszahlen auseindersetzt
    http://www.agner.org/random/

    Ist interessant und informativ
    😃 😃 😃


Anmelden zum Antworten