LabVIEWForum.de
gleichverteilte Integers geben Ungleichverteilung - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: gleichverteilte Integers geben Ungleichverteilung (/Thread-gleichverteilte-Integers-geben-Ungleichverteilung)



gleichverteilte Integers geben Ungleichverteilung - gottfried - 08.11.2009 17:55

Hallo,

bitte schaut Euch das Füllen dieses 2D Arrays mit Zahlen an. Die Adressen sind völlig gleichverteilt, aber die Treffer am Rand links und oben sind nur halb so groß - ich verstehe nicht warum.

Kann mir jemand auf die Sprünge helfen?

Danke

LV9.0


gleichverteilte Integers geben Ungleichverteilung - jg - 08.11.2009 19:56

Hallo, Gottfried,

hier liegt dein Fehler:
[attachment=22284]

Deine Index-Auswahl ist nicht gleichverteilt.
Bsp: Eingabe-Parameter size=3, dann ist dein 2D-Array also 9x9 groß, erlaubte Indices also 0 bis 8.
An der eingekreisten Stelle hat der Double-Zufallswert aber Werte von 0 bis 8,999...

Wenn du erst nach unten abrundest, funktioniert es:
snip09
[attachment=22285]

Gruß, Jens

EDIT: @schrotti: wenigstens sind wir uns einig bei der Erklärung...Wink


gleichverteilte Integers geben Ungleichverteilung - schrotti - 08.11.2009 20:15

Du multiplizierst die Zufallszahl und indizierst damit das Array. Hier findet eine implizite Typumwandlung statt, und die rundet nicht auf den kleineren, sonderen auf den nächsten Wert. Bei size 2, also einem Array 6x6, bkommst du also 50% weniger Treffer auf 0 und 6 als auf 1,2,3,4 und 5. Da du zwei Zufallzahlen benötigst hast du am Index [0;0] nicht die Hälfte, sondern nur eine Viertel aller Treffer. Da die 6 genauso selten wie die eins getroffen wird müsste ein 2D-Array am Ende eigentlich an allen vier Ecken 1/4, auf den Geraden zwischen den Ecken 1/2 und der Rest 1 der Trefferhäufigkeit haben. Das du das nicht siehst liegt daran, dass es den Index 6 in einem Array der Größe 6x6 nicht gibt. Wenn du die Zufahlszahlen anstatt mit Arraylänge mit Arraylänge-1 multiplizierst erkennst du sofort den Fehler. Lösung siehe unten.
[attachment=22286]

Edit: Ich sollte vor dem Antworten auf Vorschau drücken, dann hätte ich gesehen, dass Jens schon vor Urzeiten geantwortet hatte.


gleichverteilte Integers geben Ungleichverteilung - gottfried - 09.11.2009 20:14

Sorry die Wortwahl: "ich bin ein Depp"

Danke Euch - ich hab's einfach nicht gesehen

Gottfried