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:

Zufall in QB?? Fehler???

 
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
otti



Anmeldungsdatum: 28.02.2005
Beiträge: 112
Wohnort: Wildberg

BeitragVerfasst am: 26.03.2005, 18:52    Titel: Zufall in QB?? Fehler??? Antworten mit Zitat

hallo

als ich beim proggen mal folgendes ausprobiert habe:

--------------------------------------------------------------------------------------

REM Programm, das beweist,dass bei QB Zufall nicht gleich Zufall ist
REM 26.3.2005 (c) otti

CLS

i%=1 'Variable i% den Wert 1 zuweisen
FOR i%=1 TO 100 ' FOR ... NEXT -Schleife beginnen
RANDOMIZE TIMER 'Zufallsgenerator starten
w%=INT (RND *6)+1 'Variable w% wird zufälliger Wert aus 1-6
'zugewiesen

SELECT CASE w% ' w% analysieren
CASE 1 : e%=e%+1 'bei 1 ,2,3,..,6 der Variable
CASE 2 : z%=z%+1 'e%,z%,d%,...,s% 1 dazuaddieren
CASE 3 : d%=d%+1
CASE 4 : v%=v%+1
CASE 5 : f%= f%+1
CASE 6 : s%=s%+1
END SELECT 'Analyse beenden
NEXT i%

'
Print "1=";e% 'Ergebnisse auswerten
Print "2=";z%
Print "3=";d%
Print "4=";v%
Print "5=";f%
Print "6=",s%

SLEEP 5

END
--------------------------------------------------------------------------------------

Bei meinem PC kommen bei jedem neuem Durchlauf des Progs die gleichen Werte für jede Variable heraus.

Bei wem das nicht so ist,der sollte folgende Zeile ausbessern:

--------------------------------------------------------------------------------------
FOR i%= 1 TO 100
--------------------------------------------------------------------------------------

in:

--------------------------------------------------------------------------------------
FOR i%= 1 TO 1000
--------------------------------------------------------------------------------------
Das geht mit Werten bis zu 10 000 ,dann meldet QB Überlauf!


DAS ERGEBNIS DES GANZEN GESCHREIBSEL:

QB errechnet "Zufall" immer Gleich!!!
d.h. dass die Befehle RANDOMIZE TIMER und RND nicht zufällige Zahlen erstellen sondern berechnete....Von wegen Zufall!!

Ich habe schon an eine Lösung gedacht:

Den Zufall abhängig vom Datum (DATE$) und der Uhrzeit (TIME$) machen
??
Doch genau weiß ich auch noch nicht wie das funktionieren soll...
Auf jeden Fall ist das Datum mit der Zeit verbunden jede (Minitel)sekunde
unterschiedlich.Man müsste also aus allen Daten,die man zu Datum und Uhrzeit bekommt Zufallszahlen heraus-entschlüsseln.Und zwar aus jeder so dass es wirklich Zufall ist...

Ich zerbrech mir mal weiter den Kopf darüber..(aber nicht so: mit dem Kopf durch die Mauer wollen zwinkern

Eigentlich ist das ja ne philosophische Frage:
>>Kann man Zufall berechnen??<<

Aber das geht jetzt zuweit... durchgeknallt Kopf schütteln peinlich

greetz
otti
_________________
Gute Musik lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 26.03.2005, 19:07    Titel: Antworten mit Zitat

http://de.wikipedia.org/wiki/Gesetz_der_großen_Zahlen

Irgendwann bekommst du immer ähnlich hohe Zahlen heraus, je öfter du die Analyse-Prozedur wiederholst.

Bei mir spuckt das Programm bei jedem Durchlauf andere Zahlen aus..und ich hab den Endwert der Schleife auf 32766 gesetzt, der größte Wert den eine Integervariable aufnehmen kann durchgeknallt
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 26.03.2005, 19:23    Titel: Antworten mit Zitat

Vielleicht solltest du
Code:

RANDOMIZE TIMER

nur vor der FOR-NEXT Schleife anwenden...

Weiß aber auch nicht so genau.

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Skilltronic



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

BeitragVerfasst am: 26.03.2005, 21:48    Titel: Antworten mit Zitat

Doch, das müsste schon helfen. Wenn du immer wieder RANDOMIZE TIMER aufrufst, geschieht das in fast gleichen Zeitabständen, weil ja der Programmdurchlauf ungefähr gleich lange dauert. So bekommt man keine schönen Zufallszahlen. Ganz deutlich wird es, wenn man immer aus zwei Werten ein Koordinatenpaar macht und damit Punkte auf dem Bildschirm zeichnet. Ist RANDOMIZE TIMER in der Schleife, bilden sich diagonale Linien, steh es davor, gibt es eine zufällige Verteilung.

Es gibt aber auch andere Möglichkeiten Zufallszahlen selbst zu erzeugen, indem man rekursive Gleichungen benutzt (z.B. das Feigenbaum-Szenario), die ins Chaos laufen, dabei aber unter eine bestimmten Grenze bleiben.

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dreael
Administrator


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

BeitragVerfasst am: 26.03.2005, 22:24    Titel: Antworten mit Zitat

QB generiert wie praktisch alle Programmiersprachen nur sog. Pseudo-Zufallszahlen, d.h. verwendet einen Algorithmus wie beschrieben.

Wirklich starke Zufallszahlen generieren ist übrigens noch recht rechenzeitaufwändig. Gebraucht wird dies typischerweise von SSH und SSL, um die Sitzungsschlüssel zu generieren.

Bei gewissen Anwendungen kann es auch Sinn machen, einen Hardware-Zufallsgenerator zu verwenden, d.h. irgend eine Schaltung, die ein Rosa-Rauschen generiert und dann am A/D-Wandler in eine Zahl umwandelt.

Übrigens liefert sonst das Pixelrauschen beim Scanner (unifarbiges Blatt als Vorlage) ganz gute Zufallszahlen.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 27.03.2005, 14:44    Titel: Antworten mit Zitat

lol, "um diesen zufallsgesteuerten Verschlüsselungsalgorythmus benutzen zu können schließen sie bitte einen Scanner an" lachen


diese Pseudo-Zufallszahlen kann man sich auch zum verschlüsslen zunutze machen.. einfach randomize mit dem Passwort was in diesem fall eine zahl sein muss, dann einfach jedes Ascii-zeichen mit int(rnd*100) multiplizieren und in die Dateischreiben.

Zum entschlüsseln dann einfach wieder Randiomize mit der passwort-zahl und die eingelesen zeichen durch int(rnd*100) teilen und wieder in die Datei schreiben. Funktioniert wunderbar, mann muss halt immer das prog neu starten nach einer Verschlüsselung, was man aber sehr praktisch anwenden kann als QuickOption im Windows-Rechtsklick-Menü. hatt ich mal gemacht. nette sache.

Wem das zu simpel ist kann bei der 100 auch noch die Eingabe einer zweiten Passwort-Zahl bis 128 verlangen und diese dann bei dem int(rnd*100) statt der 100 benutzen... Also da hat man dann n paar möglichkeiten lächeln
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 27.03.2005, 14:49    Titel: Antworten mit Zitat

Jaja, das ganze prinzip nennt sich Chew-Crypto. Übrigens musst du dein Programm nach jedem ver/entschlüsseln nicht neustarten:

a = RND(-1)

führt zu einem Reset des Zufallsgenerators.
Sehr praktisch *g*


Ansonsten solltest du dir einfach EPS's seite ansehen, da ist alles wunderbar beschrieben. (Viel neues wird für dich aber auch nicht mehr dastehen, wenn du schon das Grundprinzip begriffen hast *g*)
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ah8982



Anmeldungsdatum: 11.09.2004
Beiträge: 62
Wohnort: Ba-Wü

BeitragVerfasst am: 01.04.2005, 12:22    Titel: Re: Zufall in QB?? Fehler??? Antworten mit Zitat

Versuchs mal so:

Code:
REM Programm, das beweist, dass bei QB Zufall gleich Zufall ist
REM  01.04.2005 (c) ah8982

CLS

i% = 1                        'Variable i% den Wert 1 zuweisen
RANDOMIZE TIMER               'Zufallsgenerator starten
FOR i% = 1 TO 100             ' FOR ... NEXT -Schleife beginnen
    w% = INT(RND * 6) + 1     'Variable w% wird zufälliger Wert aus 1-6
                              'zugewiesen
   
      SELECT CASE w%                        'w% analysieren
                       CASE 1: e% = e% + 1  'bei 1 ,2,3,..,6  der Variable     
                       CASE 2: z% = z% + 1  'e%,z%,d%,...,s% 1 dazuaddieren
                       CASE 3: d% = d% + 1
                       CASE 4: v% = v% + 1
                       CASE 5: f% = f% + 1
                       CASE 6: s% = s% + 1
      END SELECT                            'Analyse beenden
NEXT i%

'
PRINT "1 = "; e%               'Ergebnisse auswerten
PRINT "2 = "; z%
PRINT "3 = "; d%
PRINT "4 = "; v%
PRINT "5 = "; f%
PRINT "6 = "; s%

PRINT: PRINT "Beliebige Taste zum beenden drücken!"

DO: Key$ = INKEY$: LOOP WHILE Key$ = ""


Gruß ah8982
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 01.04.2005, 15:21    Titel: Antworten mit Zitat

Soll das ein Aprilscherz sein?? verwundert zwinkern

Also:

1. Der Titel stimmt nicht; wenn die Zufallszahlen in gleicher Anzahl vorkommen sollen,
muss das RANDOMIZE TIMER in die Schleife. Ist bei dir nicht der Fall, -> es kommen verschiedene Zahlen, -> falsche Überschrift.

2. Das i% = 1 kannste dir sparen, wird bei FOR i% = 1 TO 100
schon geregelt.

3. Das ist genau das gleiche Programm, wie es schon von mir und Anderen vorgeschlagen wurde. Das heißt, das
ah8982 hat Folgendes geschrieben:

Code:

REM  01.04.2005 (c) ah8982


ist eine Zumutung. Kopf schütteln zwinkern

Na dann, April April! Zunge rausstrecken durchgeknallt

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Xolios
aka Ray


Anmeldungsdatum: 07.12.2004
Beiträge: 589
Wohnort: Wildeshausen

BeitragVerfasst am: 01.04.2005, 16:17    Titel: Antworten mit Zitat

das jb immer so fies schreiben muss Kopf schütteln grinsen happy lächeln
_________________
www.ray-earth.de
Anm.: Neue ICQ
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 01.04.2005, 17:22    Titel: Antworten mit Zitat

OK, OK, ich nimm's zurück.
Hatte irgendwie schlechte Laune verlegen peinlich ...

EDIT: Wollte nämlich Star Wars Battlefront installieren, und es hat nicht geklappt.
Sch*** Windows XP
schimpfen wütend
Ich glaube deshalb ist es etwas heftig ausgefallen.
Sorry nochmal.

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 01.04.2005, 17:51    Titel: Antworten mit Zitat

Naja, dafür ham wir doch unseren Spam-Thread *g*
Oder du machst einfach nen "Wut-Raus"-Thread auf, dann weiß jeder, dass er ned gemeint is *g*

Nur mal so als Vorschlag durchgeknallt
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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