Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Zufallsgenerator RND

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
QB42



Anmeldungsdatum: 20.09.2005
Beiträge: 25

BeitragVerfasst am: 21.09.2005, 23:31    Titel: Zufallsgenerator RND Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 21.09.2005, 23:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 22.09.2005, 07:03    Titel: Antworten mit Zitat

"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
QB42



Anmeldungsdatum: 20.09.2005
Beiträge: 25

BeitragVerfasst am: 22.09.2005, 13:03    Titel: Hat funktioniert Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 22.09.2005, 21:16    Titel: Antworten mit Zitat

"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ThommyBee



Anmeldungsdatum: 30.03.2006
Beiträge: 14

BeitragVerfasst am: 12.08.2006, 11:54    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 12.08.2006, 12:05    Titel: Antworten mit Zitat

Code:
DIM zufall as Integer
randomize timer^2
zufall = INT(RND * 100)
PRINT zufall
zufall = INT(RND * 100)
PRINT zufall
zufall = INT(RND * 100)
PRINT zufall
SLEEP: END

...liefert bei mir immer andere Werte.
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ThommyBee



Anmeldungsdatum: 30.03.2006
Beiträge: 14

BeitragVerfasst am: 12.08.2006, 12:29    Titel: Antworten mit Zitat

Die aktuelle Zeit quadrieren? Ist das der Kniff? Aber dann müsste doch trotzdem drei mal das gleiche rauskommen... *verwirrtbin*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThommyBee



Anmeldungsdatum: 30.03.2006
Beiträge: 14

BeitragVerfasst am: 12.08.2006, 12:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 12.08.2006, 13:03    Titel: Antworten mit Zitat

ThommyBee hat Folgendes geschrieben:
Ach, jetzt hab ich's - ich hab immer wieder Randomize Timer geschrieben - drei mal, über jeder INT-Zeile.

Daran liegts.

Zitat:
Aber das ^2 ist nicht unbedingt nötig, oder?

Nö. lächeln
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz