Wahrscheinlichkeitsverteilung mit Rnd (x,y)
Übersicht

BBPro2Betreff: Wahrscheinlichkeitsverteilung mit Rnd (x,y) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi,
ich habe gerade feststellen müssen dass die Wahrscheinlichkeitsverteilung bei dem Befehl Rnd (x,y) nicht homogen ist. die wk für exakt x und exakt y ist nur halb so groß wie die wk für alle zahlen im bereich von x+1 bis y-1 das kann durchaus zu problemen führen wenn man sich dessen nicht bewusst ist (und hat es auch im nachhinein - ich hab einige programme geschrieben bei denen ich froh gewesen wäre das zu wissen... leider stelle ich es jetzt erst fest) warum ich das hier schreibe ? eigentlich nur um auf das problem aufmerksam zu machen simpelster lösungsweg: Rnd (x-1, y+1) durchlaufen lassen - wenn exakt x-1 oder exakt y+1 ausgespuckt wird das ganze wiederholen. somit liegen alle werte die man haben will in dem intervall und haben somit auch die gleiche wk. ist das schonmal jemandem aufgefallen ? wie kann man das vlt besser beheben ? danke |
||
![]() |
coolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Verwende SeedRnd![]() ![]() |
||
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project! "Eigenzitate sind nur was für Deppen" -Eigenzitat |
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
das tue ich natürlich
das ist nicht das angesprochene problem hier kurz der code vlt wird es dann deutlicher Code: [AUSKLAPPEN] SeedRnd MilliSecs () Graphics 640,480,16,2 Repeat a = Rnd (1,10) If a = 1 Then a1 = a1 + 1 If a = 2 Then a2 = a2 + 1 If a = 3 Then a3 = a3 + 1 If a = 4 Then a4 = a4 + 1 If a = 5 Then a5 = a5 + 1 If a = 6 Then a6 = a6 + 1 If a = 7 Then a7 = a7 + 1 If a = 8 Then a8 = a8 + 1 If a = 9 Then a9 = a9 + 1 If a = 10 Then a10 = a10 + 1 Until KeyDown (1) Notify a1 + "," + a2 + "," + a3 + "," + a4 + "," + a5 + "," + a6 + "," + a7 + "," + a8 + "," + a9 + "," + a10 End es geht um die wahrscheinlichkeitverteilung, nicht um die zahlen als solche. auf eine große samplesize (wenn du nen schnellen pc hast reichen wenige sekunden um eine solche zu erreichen) sollten die werte sich beliebig annähern. a2 bis a9 tun das auch - a1 und a10 nähern sich an a2/2 an. das ist kein zufall ![]() |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich behaupte mal, das liegt am Rundungsverhalten der Rnd-Funktion...
Die meisten Zufallszahl-Generatoren spucken Zahlen im Bereich 0.0 - 1.0 aus. Das wird dann hochmultipliziert und einfach gerundet. zB wirds auf den Bereich 0 - 10 gestreckt, wobei die 0 dann nur von den Werten [0.0, 0.5) und die 10 nur von den Werten [9.5, 10] erreicht wird, alle anderen Werte von [n-0.5, n+0.5) - also grad eine doppelt so grosse "Trefferwahrscheinlichkeit" aufweisen. Das ändert leider tatsächlich nichts daran, dass Rnd nicht wirklich Zufall liefert - ist aber eine mMn plausible Erklärung ![]() mfG Edit liegt natürlich nicht am Rundungsverhalten der Rnd-Funktion, sondern an dem von Blitz, wenn ein Float in ein Int gecastet wird ![]() Edit 2 Und selbstverständlich liefert Rnd wirklich Zufall - wenn mans denn auch richtig einsetzt... -_-* Mennsch, ich bin heut ein wenig neb den Schuhen... |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
- Zuletzt bearbeitet von Holzchopf am Do, Apr 02, 2009 19:42, insgesamt 2-mal bearbeitet
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
gute erklärung, dumme sache.
denke das triffts ![]() tja sollte ich meine pokersoftware wohl nochmal überarbeiten bevor einige karten öfter vorkommen als andere ![]() |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja solltest du wohl... wird aber nicht allzu schwierig sein... einfach alle Rnd![]() ![]() ![]() |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hehe ich benutze seit der ersten beta version von blitz basic for PC ausschließlich Rnd - wieso ? WIESO ????? wieso gerade ich ![]() dachte damals nich dass es nen großen unterschied machen würde ^^ |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jetzt wo ich mir den Vergleich anschaue, kommt mir BBPro2s variante noch etwas ausgeglichener vor als Rand:
Code: [AUSKLAPPEN] SeedRnd MilliSecs ()
Graphics 640,480,16,2 Const MaxZ = 10 Local R1[MaxZ], R2[MaxZ] Print("Rand:") For i=0 To MaxZ*1000 a = Rand(1, MaxZ) R1[a] = R1[a] + 1 Next For i=1 To MaxZ Print R1[i] Next Print("") Print("GetRnd:") For i=0 To MaxZ*1000 a = GetRnd(1, MaxZ) R2[a] = R2[a] + 1 Next For i=1 To MaxZ Print R2[i] Next WaitKey End Function GetRnd#(Min#, Max#) Repeat Local z# = Rnd(Min#-1, Max#+1) Until z# <> Min#-1 And z# <> Max#+1 Return z# End Function |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
faeX |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit dem Runden ist's mir grade auch eingefallen aber natürlich waren die anderen schneller ![]() EDIT: Welcher Witzbold hat meine Posts gelöscht??? |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group