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?!
-
Willst du die Wörter aus einer Datei lesen?
Falls ja:
http://www.c-plusplus.net/forum/viewtopic.php?t=39469
und
http://www.schornboeck.net/ckurs/dateien.htmZufall:
http://www.c-plusplus.net/forum/viewtopic.php?t=39344
-
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 );
RemarksThe 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 Sequenzsrand(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 ZufallszahlenHabe hier eine Seite gefunden die sich mit Zufallszahlen auseindersetzt
http://www.agner.org/random/Ist interessant und informativ