Die Leistung des Blitz-Basic Zufallsgenerators:

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

hardcoder

Betreff: Die Leistung des Blitz-Basic Zufallsgenerators:

BeitragSo, Aug 08, 2004 19:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Leistung eines Zufallsgenerators kann man mit verschiedenen Methoden ermitteln. So könnte man zum Beispiel die Verteilung der Zufallszahlen prüfen. Dabei stellt man aber fest das selbst der billigste Algorythmus Normalverteilung liefert.
Der ideale ZG erstellt vielmehr eine Zahl, die nichts mit den Vorherigen zu tun hat, d.h. dass die Differenz zwischen der jetzigen Zahl und der Vorherigen immer gleich verteilt ist.
Damit meine ich, dass alle Differenzen gleich oft vorkommen sollten.
Das folgende Programm regristriert die Differenzen von Zufallszahlen von 0 bis 9:
Code: [AUSKLAPPEN]

Graphics 1024,768,16,1
SeedRnd MilliSecs()
Color 255,255,255

Dim diff(9) ;Array der Differenzen von 0 bis 9

Const quantity = 10000 ;Anzahl der Ziehungen

Repeat
   For I = 1 To quantity
      value_old = value ;die vorherige Zahl
      value = Rand(1,10) ;die jetzige Zahl
      diff(Abs(value - value_old)) = diff(Abs(value - value_old)) + 1 ;hier wird die ermittelte Diferenz um 1 erhöht
   Next
   ;Grafikausgabe, uninteressant
   Cls
   For I = 0 To 9
      Rect 10,50 + I * 60,10000 * diff(I) / 4 / quantity,40,1
      Text 20 + 10000 * diff(I) / 4 / quantity,70 + I * 60,I,0,1
      Text 60 + 10000 * diff(I) / 4 / quantity,70 + I * 60,100 * diff(I) / quantity + "%",0,1
      diff(I) = 0
   Next
Until WaitKey() = 13
End

Jeder Balken ist einer Differenz zugeordnet.
Man sollte meinen, dass jeder Balken gleich lang wär, stattdessen kommt die 1 am häufigsten vor, die 9 am seltesten und 0 so in der Mitte.
Wie ist das zu erklären?
 

lettorTrepuS

BeitragSo, Aug 08, 2004 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.
 

hardcoder

BeitragSo, Aug 08, 2004 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber es ist doch nicht normal, das hohe Werte öfter vorkommen als niedrige. Bei Random(10) = 0 erwartet doch jeder, dass die Bedingung ca. alle 10 Mal wahr ist.
Ein guter ZG sollte so sein wie beim Lotto(6 aus 49). Da kommen über 20 Jahre gerechnet alle Zahlen gleich oft vor.
Zufall bedeutet doch, dass die Wahrscheinlichkeit bei allen Zahlen gleich ist und nicht, dass hohe Werte häufiger vorkommen als niedrige.
Aus dem Diagramm erkennt man doch ganz klar, dass der BB2D ZG miserabel ist, da er ein ganz bestimmtes Differenzenmuster aufzeigt.

Markus2

BeitragSo, Aug 08, 2004 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Du nutzt auch nur einen Startkeim ...
 

BIG BUG

BeitragSo, Aug 08, 2004 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Algo liefert nur nicht das, was du meinst dass er liefert Smile

Überlege mal:
Differenz von 9 kann nur bei 0 & 9 vorkommen
Differenz von 8 kann bei 0&8 sowie 1&9 vorkommen
Differenz von 7 kann bei 0&7, 1&8, sowie 2&9 vorkommen
.
.
.
Alles klar?
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)
 

René Meyer

BeitragSo, Aug 08, 2004 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mir das Eingangslisting nicht genau angesehen, aber dieses Programm zeigt, daß der Zufallsgenerator durchaus jede Zahl ungefähr gleich berücksichtigt. Er erzeugt 1 Million Mal eine Zahl zwischen 0 und 1000 und zählt, wie oft die Zahl vorgekommen ist. Dann werden 20 dieser 1000 Zahlen ausgegeben.

Code: [AUSKLAPPEN]
SeedRnd MilliSecs()

Dim Daten(1000)
For I=0 To 1000000
 A = Rand(0,1000)
 Daten(A) = Daten(A) + 1
Next


For I=0 To 1000 Step 50
 Print Daten(I)
Next

WaitKey
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group