Die Leistung des Blitz-Basic Zufallsgenerators:
Übersicht

hardcoderBetreff: Die Leistung des Blitz-Basic Zufallsgenerators: |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
hardcoder |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du nutzt auch nur einen Startkeim ... | ||
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dein Algo liefert nur nicht das, was du meinst dass er liefert ![]() Ü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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group