Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
QB42
Anmeldungsdatum: 20.09.2005 Beiträge: 25
|
Verfasst am: 21.09.2005, 23:31 Titel: Zufallsgenerator RND |
|
|
Hallo, ich beschäftige mich mit Qbasic erst seit einer Woche und da ich nun ein Programm geschrieben habe, wo der RND-Befehl drin ist, ist mir aufgefallen, daß das Programm zwar einerseits funktioniert, aber andererseits RND in Wirklichkeit gar kein echter Zufallsgenerator ist. Durch Nachforschen in der Materie bin ich nun dahintergekommen, daß es da auch noch RND TIMER gibt: Wer kann mir bitte mal erklären, was es damit auf sich hat und wie man mit RND TIMER doch noch zu einem richtigen Zufallsgenerator kommt? Danke für Infos!
QB42
Zuletzt bearbeitet von QB42 am 25.09.2005, 22:45, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 21.09.2005, 23:47 Titel: |
|
|
Hallo
Mit RANDOMIZE kannst du einen Startwert für die erzeugung von Zufallszahlen setzen. Jede Zahl wird intern vom Computer aus ihrer jeweiligen Vorgängerin berechnet, es sind nur Pseudozufallszahlen. Ein gleicher Startwert erzeugt immer die gleiche Reihe von Zahlen. Mit RANDOMIZE TIMER wird eifach die aktuelle Uhrzeit als Startwert genommen. Da die bei jedem Programmstart anders ist, wird jedesmal eine andere Reihe von Zahlen erzeugt
Gruss
Skilltronic. _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 22.09.2005, 07:03 Titel: |
|
|
"Echte" Zufallszahlen erzeugen ist so eine Komplexe Wissenschaft, das es in QBasic nur dann "echte" Zufallszahlen geben kann, wenn man sie Extren (z.B. über die Serielle Schnittstelle) zuführt, wie diese Zufallszahl dann Extern erzeugt wird ist wider so eine Sache ...
Kurzum: Für viele Anwendungen ist Randomize Timer Zufälig genug, da die "Gefahr" das das Programm genau zur Gleichen Uhrzeit gestartet wird nahe Null ist (und wenn die Abweichung nur im Millisekunden Bereich ist, das reicht schon bei weitem) _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
QB42
Anmeldungsdatum: 20.09.2005 Beiträge: 25
|
Verfasst am: 22.09.2005, 13:03 Titel: Hat funktioniert |
|
|
Vielen Dank für die Postings. Ich habe das ausprobiert mit RANDOMIZE TIMER und das funktioniert bestens!
QB42
Zuletzt bearbeitet von QB42 am 25.09.2005, 22:46, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 22.09.2005, 21:16 Titel: |
|
|
"Normale" Mathematik-Bibliotheken in den gängigen Programmiersprachen erzeugen nur Pseudo-Zufallszahlen, die sich irgendwann einmal wiederholen. Das Erzeugen von kryptografisch starken Zufallszahlen (nötig, wenn Du im Browser eine HTTPS-Seite besuchst [Online-Banking!], um den Sitzungsschlüssel zu generieren) stellt dagegen wiederum eine eigene Wissenschaft dar.
Sofern man keine sicherheitskritische Applikationen programmiert, reichen RANDOMIZE TIMER und RND vollkommen aus. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
ThommyBee
Anmeldungsdatum: 30.03.2006 Beiträge: 14
|
Verfasst am: 12.08.2006, 11:54 Titel: |
|
|
Hi, ich hab auch mal eine Frage:
Ich programmiere ein Rollenspiel, und in dem Kampfsystem brauche ich drei Zufallszahlen.
1. Die Attacke des Gegners
2. Die Verteidigung des Angegriffenen
3. Ein eventuelles Ausweichen des Angegriffenen
Erzeuge ich drei Zahlen mit RND, habe ich immer die gleichen (1, 54 und 27, oder so ähnlich), dass heißt jede Kampfrunde läuft gleich ab (liegt der Angriffswert des Angreifers über 1 (tut er), trifft er immer, liegt der Verteidigungswert des anderen über 54, wehrt dieser erfolgreich ab usw.).
Das Problem, dass es ja keine echten Zufallszahlen sind, ist mir bewusst.
Deshalb dachte ich, ich nehme RANDOMIZE TIMER, da es ja von der Zeit abhängig ist.
Ich lasse RANDOMIZE TIMER dreimal direkt nacheinander ablaufen, um meine drei Zahlen zu bekommen.
Der erste Wert ist eine schöne Zufallszahl, immer anders, je nachdem wann man es startet,
Die zwei nachfolgenden Zahlen sind aber genau gleich oder unter Umständen ums eins größer.
Das macht mir alles zunichte, es wäre so, als wenn drei Spieler ein Spiel spielen, der erste würfelt und die anderen beiden würfeln immer exakt das gleiche, was Spieler1 gewürfelt hat...
Habt ihr einen Tip, wie ich 3 unterschiedliche Zufallszahlen ohne große Umstände hinbekomme? |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
ThommyBee
Anmeldungsdatum: 30.03.2006 Beiträge: 14
|
Verfasst am: 12.08.2006, 12:29 Titel: |
|
|
Die aktuelle Zeit quadrieren? Ist das der Kniff? Aber dann müsste doch trotzdem drei mal das gleiche rauskommen... *verwirrtbin* |
|
Nach oben |
|
 |
ThommyBee
Anmeldungsdatum: 30.03.2006 Beiträge: 14
|
Verfasst am: 12.08.2006, 12:38 Titel: |
|
|
Ach, jetzt hab ich's - ich hab immer wieder Randomize Timer geschrieben - drei mal, über jeder INT-Zeile.
Aber das ^2 ist nicht unbedingt nötig, oder? Das macht im Endeffekt doch keinen Unterschied? |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
|