Hi, ich programmiere gerade ein Konsolenprogramm das mit dem Benutzer "BlackJack" spielt. Gewinnt der Benutzer verätt ihm das Programm ein "(für neulinge)Geheimis" zb. wie man Windows XP Home zu einer (Light)Pro macht, verliert jedoch der Benutzer wird je nach Brisanz des "Geheimnises" nur die Auflösung als Strafe verringerd oder sogar eine Systemdatei gelöscht.
Nun zu meiner Frage, jeder muss 2 mal hintereinander Würfeln jedoch kommen stets 2 gleiche Zahlen bei jedem Würfeldurchgang raus. Der Code sie etwa so aus(bin auf Arbeit und habe den Orginalcode gerade nicht zurhand):
C++:
srand(time( NULL )) würfelzahl1 = rand() % 6 +1;
srand(time( NULL )) würfelzahl2= rand() % 6 +1;
Ich vermute das diese 2 Werte in der gleichen Sekunde ermittelt werden und srand() somit stehts den gleichen "Startwert" an rand() übergibt. Kann man srand so einstellen das es bei 2ten Mal einen anderen Wert an rand() übergibt zb. in Millisekunden oder so. Oder hatt jemand bessere Lösungswege?
Hier kann es nur sehr selten funktionieren. time(NULL) gibt die Sekunden seit dem UNIX Zeitstempel. Und weil nur würfelzahl1 = rand() % 6 +1; dazwischen steht ist natürlich nie die Sekunde vergangen außer du hast nen extrem lahmen Prozessor der für die Zeile schon ne Sekunde braucht -- nur olfaktorisch fassbar....
Du solltest Dir mal die "Mühe" machen, - Die Dokumentation von srand zu lesen - Die Postings zu lesen dieses Threads zu lesen - Die FAQ zu lesen
Sollte Deine Frage danach noch immer nicht geklärt sein, dann kannst Du ja mal mitteilen, was Du genau nicht verstanden hast. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21)
-FAQ hab ich gelesen, da wird srand() leider nicht erwähnt.
-Postings hab ich natürlich auch gelesen, mauralix hat das Problem gut erklärt
-die Dokumentation von srand() (hier klicken) ist auf Englisch und daher schwer für mich zu verstehen aber nichts desto trotz hab ich versucht Sie zu verstehen aber da wird nur etwas mit "seed" erwähnt