003
19.12.2003, 01:22 Uhr
Pablo
Supertux (Operator)
|
conio.h sagt schon, dass es nur unter DOS kompilierbar ist.
Es gibt in ANSI C keine Funktion randomize(); Um printf zu benutzen, müsste man stdio.h includieren.
Computer können keine Zufällige Zahlen berechnen. Probiere mal das:
C++: |
#include <stdio.h> #include <stdlib.h> int main() { int i; for(i=0; i<11; ++i) printf("%d\n", rand()); return 0; }
|
Führe 2 oder 3 Mal hintereinander. Die Zahlen sind immer gleich, d.h die Reihe der Zufallszahlen ist stets gleich. Das liegt daran, dass Computer die Zahlen nicht zufällig generieren, sondern dass sie feste Reihen von Zahlen haben, die man bekommt, wenn man rand() aufruft.
Um dieses Problem umgehen zu können, gibt es die Funktion srand. srand initialisert eine Liste bzgl des Parameters. Die Reihen der Zufallszahlen änder sich, wenn das Parameter sich ändert.
Die Funktion time(NULL) liefert die Anzahl der vergangen Sekunden seit dem 1. Januar 1970. Da diese Zahl sich jede Sekunde ändert, können wir mit time(NULL) unsere Zufallszahlen-Reihe initialisieren, denn die Programme niemals in der selben Zeit aufgerufen werden und time(NULL) sich ständig ändert.
Jetzt füge srand(time(NULL)); nach int i; ein und führe das 3 oder 4 mal aus. Änderen sich die Zahlen?
C++: |
#include <stdio.h> #include <stdlib.h> int main() { int i; srand(time(NULL)); for(i=0; i<11; ++i) printf("%d\n", rand()); return 0; }
|
Bearbeitung von FloSoft: |
Hab nun mal deine printf-Schleife geändert
C++: |
printf(i=0; i<11; ++i)
|
|
-- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth! Dieser Post wurde am 19.12.2003 um 18:51 Uhr von FloSoft editiert. |