Wahrscheinlichkeiten - Problem
lima-city → Forum → Sonstiges → Schule, Uni und Ausbildung
beitrag
betreiber
chance
count
einsatz
fragen
gewinnen
gleichung
gruss
konto
kontostand
listen
lsung
null
sache
sicht
simulation
skript
spieler
wahrscheinlichkeit
-
Hallo!
Es geht um ein Gewinnsystem, es gibt folgende Gewinnmöglichkeiten:
Einsatz * 4 Einsatz * 8 Einsatz * 16 Einsatz * 36
Nun weiß ich nicht, wie ich die Wahrscheinlichkeiten berechnen kann.
Wenn es nur eine Gewinnmöglichkeit gäbe, würde ich die Chance 1 / 4 einstellen und fertig ist.
Wie lauten nun die Wahrscheinlichkeiten, dass der Betreiber (theoretisch) KEIN Verlust und kein Gewinn macht?
Ich hatte nun zuerst folgendes raus:
Einsatz * 4 = 1 / 4 Einsatz * 8 = 1 / (8+4) = 1 / 12 Einsatz * 16 = 1 / (16+8+4) = 1 / 28 Einsatz * 32 = 1 / (32+16+8+4) = 1 / 60
Dann habe ich mir eine theoretische Tabelle gemacht, laut dieser dachte ich erst, die Wahrscheinlichkeiten dürften stimmen, hatte aber einen Denkfehler:
Spiel => Gewinn/Verlust des Spielers 1 => -1 * Einsatz 2 => -2 * Einsatz 3 => -3 * Einsatz 4 => 0 (Da die Chance 1/4 ist gewinnt der Spieler 4 * Einsatz) 5 => -1 * Einsatz 6 => -2 * Einsatz 7 => -3 * Einsatz 8 => -4 * Einsatz 9 => -5 * Einsatz 10 => -6 * Einsatz 11 => -7 * Einsatz 12 => 0 (Da die Chance 1/12 ist gewinnt der Spieler 8 * Einsatz) 13 => -1 * Einsatz 14 => -2 * Einsatz 15 => -3 * Einsatz 16 => -4 * Einsatz 17 => -5 * Einsatz 18 => -6 * Einsatz 19 => -7 * Einsatz ....
Mein Fehler war, bei dem 8. Spiel gewinnt man ja auch wieder (Einsatz * 4, da Chance 1/4 ist).
Also habe ich das nochmal richtig gemacht und so würde der Betreiber Verlust machen:
Spiel => Gewinn/Verlust des Spielers 1 => -1 * Einsatz 2 => -2 * Einsatz 3 => -3 * Einsatz 4 => 0 (Da die Chance 1/4 ist gewinnt der Spieler 4 * Einsatz) 5 => -1 * Einsatz 6 => -2 * Einsatz 7 => -3 * Einsatz 8 => 0 (Chance ist ja 1/4 immernoch!) 9 => -1 * Einsatz 10 => -2 * Einsatz 11 => -3 * Einsatz 12 => +4 * Einsatz (Da die Chance 1/12 ist gewinnt der Spieler 8 * Einsatz) 13 => +3 * Einsatz 14 => +2 * Einsatz 15 => +1 * Einsatz 16 => +4 * Einsatz (Chance 4*Einsatz zu gewinnen ist immer noch 1/4) 17 => +3 * Einsatz 18 => +2 * Einsatz 19 => +1 * Einsatz ....
Bei Spiel Nr. 12 sollte die Chance 1/12 zutreffen, da die höheren Gewinne vor den niedrigeren gewertet werden.
Also es wird erst geschaut ob 1/12 zutrifft, wenn nicht dann wird nach 1/4 geschaut.
Nach weiteren Überlegungen, bin ich dann auf die Idee gekommen, immer Guthaben als \"Backup\" zu haben, wenn ich z.B. die Chance 1/5 zum gewinnen des 4-fachen einstelle, habe ich ja eine Einsatzhöhe als \"Backup\" und kann nun die Tabelle so weiterführen, dass ich bei -10 * Einsatz Verlust des Users z.B. den Gewinn Einsatz * 8 hinsetze.
Leider weiß ich hier nicht genau, was dort auch das schlauste wäre.
Hat hier jemand eine bessere Idee? Oder evtl. eine Berechnung wie ich am besten meine Idee weiterführen kann (mit änderbaren und mehr Gewinnmöglichkeiten!).
Danke schon einmal für alle Versuche und natürlich noch ein Danke extra, wenn es klappt :)
Gruß,
sneerfire -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
deine Überlegungen sind soweit richtig. Deine Idee funktioniert deshalb nicht, weil du die Geweinnstufen nicht getrennt betrachten kannst. Aber das hast du ja schon selbst gemerkt :).
Ich hoffe dir ist klar, dass es für dein Problem unendlich viele Lösungen gibt.
Der Ansatz ist folgender (ob aus Sicht des Betreibers oder des Spielers ist bei Abwesenheit von Kosten egal):
Es sei pn die Wahrscheinlichkeit für die n te Gewinnstufe und E der Einsatz.
Damit das Konto ausgeglichen ist gilt aus Sicht des Spielers:
Gewinn = Verlust, also
p4 * 4*E + p8 * 8*E + p16 * 16*E + p36* 36*E = E
also
4*p4 + 8*p8 + 16*p16 + 36*p36 = 1
legst du also fest, dasss p4 = 1/4, p8 = 1/12 und P16 = 1/28 gilt, dann ist p36:
(1- 4*p4 - 8*p8 - 16*p16)/36
=(1- 4/4 - 8/12 - 16/28)/36
=(-8/12 - 16/28)/36 < 0
also funktioniert diese Festlegung der drei Wahrscheinlikeiten nicht.
Du mußt mit den Wahrscheinlichkeiten deutlich runter gehen, damit du eine gültige Lösung erhältst. Z.B kannst du es so einteilen, dass der doppelte Gewinn nur halb so wahrschinlich ist. Ist also p4 = x, dann ist p8 = x/2, p16 = x/4 und p36 = x/9:
4x + 8x/2 + 16x/4 + 36x/9 = 1
x = 1/16,
also p4 = 1/16, p8 = 1/32, p16 = 1/62 und p36 = 1/144
Natürlich kannst du auch die Gewinne breiter streuen, also mehr kleine und wenige große oder umgekehrt. Wie gesagt, es gibt unendlich viele Möglichkeiten.
Ich hoffe das ist soweit richtig und es hilft mehr als es dich verwirrt ;)
Gruß
Manni
-
Danke! Ich musste da zwar erst einmal verstehen, was was ist aber nun ist mir alles klar.
Hätte ich auch selber draufkommen können, dass man es mit Gleichungen machen kann.
Also würde folgendes gehen?
Gewinne: p2, p4, p6, p8, p10 Ich gehe dann von folgendem aus: p2 = x; p4 = x/2; p6 = x/3; p8 = x/5; p10 = x/7 Rechnung: 2x + 4x/2 + 6x/3 + 8x/5 + 10x/7 = 1 <=> x = 35/316 Also sind die Chancen: p2 = 35/316; p4 = 35/632; p6 = 35/948; p8 = 7/316; p10 = 5/316 => Man gewinnt eher kleinere Gewinne als größere
Und noch eine Frage: Wenn ich nun 1% Betreibergebühren haben will, muss die Gleichung = 1 - 1 * 0.01 sein? ;)
Gruß,
sneerfire
Beitrag geändert: 18.9.2007 15:10:55 von sneerfire -
Kompliment, sneerfire, da hast du dir was ausgedacht ;)
Was bandi999 geschrieben hat, stimmt soweit.
Aber er hat mit 36 gerechnet, ich nehm aber mal an, dass du 32 gemeint hast.
Wie gesagt, es gibt unendlich viele Lösungen, für 32 hab ich z. B. rausbekommen:
p4 = p8 = p16 = p32 = 1/60 = 0.01667
oder
p4 = 1/16, p8 = 1/32, p16 = 1/64, p32 = 1/128
sneerfire schrieb:
Ja scheint richtig zu sein, ich komme aufs gleiche Ergebnis.
Danke! Ich musste da zwar erst einmal verstehen, was was ist aber nun ist mir alles klar.
Hätte ich auch selber draufkommen können, dass man es mit Gleichungen machen kann.
Also würde folgendes gehen?
Gewinne: p2, p4, p6, p8, p10 Ich gehe dann von folgendem aus: p2 = x; p4 = x/2; p6 = x/3; p8 = x/5; p10 = x/7 Rechnung: 2x + 4x/2 + 6x/3 + 8x/5 + 10x/7 = 1 <=> x = 35/316 Also sind die Chancen: p2 = 35/316; p4 = 35/632; p6 = 35/948; p8 = 7/316; p10 = 5/316 => Man gewinnt eher kleinere Gewinne als größere
Und noch eine Frage: Wenn ich nun 1% Betreibergebühren haben will, muss die Gleichung = 1 - 1 * 0.01 sein? ;)
Ja.
-
[..]Aber er hat mit 36 gerechnet, ich nehm aber mal an, dass du 32 gemeint hast.[..]
Hatte erst 32, aber habe dann auf 36 geändert, nicht das man denkt die Gewinne verdoppeln sich immer ;) Evtl. gäbe es ja dann eine Idee die nur dann funktioniert.
Wenn ich die Chancen (Chancen von bandi999) nun so nehme, nach wie vielen Spielen sollte ich dann auf +-0 kommen?
Nach dem Gewinnen des letzten Wins? (ist natürlich nur alles theoretisch :P ) -
Hallo,
Danke! Ich musste da zwar erst einmal verstehen, was was ist aber nun ist mir alles klar.
ich bin richtig begeistert, dass sich auch mal jemand die Mühe macht, dass was ich mühsam aufgeschrieben habe nachzuvollziehen :).
Also würde folgendes gehen?
Gewinne: p2, p4, p6, p8, p10 Ich gehe dann von folgendem aus: p2 = x; p4 = x/2; p6 = x/3; p8 = x/5; p10 = x/7 Rechnung: 2x + 4x/2 + 6x/3 + 8x/5 + 10x/7 = 1 <=> x = 35/316 Also sind die Chancen: p2 = 35/316; p4 = 35/632; p6 = 35/948; p8 = 7/316; p10 = 5/316 => Man gewinnt eher kleinere Gewinne als größere
Ja, sollte klappen.
Und noch eine Frage: Wenn ich nun 1% Betreibergebühren haben will, muss die Gleichung = 1 - 1 * 0.01 sein? ;)
Auch das scheint mir korrekt zu sein.
Wenn ich die Chancen (Chancen von bandi999) nun so nehme, nach wie vielen Spielen sollte ich dann auf +-0 kommen?
Nach dem Gewinnen des letzten Wins? (ist natürlich nur alles theoretisch)
Nun, theoretisch kommst du nach unendlich vielen Spielen sicher auf +-0. Je mehr Spiele, desto größer die Wahrscheinlichkeit, dass es aufgeht.
Man kann höchstens festlegen wann es frühestens +-0 ist und das hast du ja schon in deinem ersten Posting für den Gewinn = 4 * E dargestellt.
Gruß
Manni -
Also ich habe mal ein Script erstellt welches 1.000 Spiele simuliert, leider sehe ich beim Gewinn/Verlust nie +- 0.
(http://sneerfire.lima-city.de/liste.php)
Beitrag geändert: 19.9.2007 20:18:30 von sneerfire -
Wenn du die Wahrscheinlichkeit von
1/16 für 4
1/32 für 8
1/62 für 16
1/144 für 36
hast, heißt das ja nicht
16. Spiel => 4
32. Spiel => 8
48. Spiel => 4
...
Es heißt, dass du in 1000 Spielen sehr wahrscheinlich ein Ergebnis hast wie:
62 mal 4 gewonnen
31 mal 8 gewonnen
16 mal 16 gewonnen
7 mal 36 gewonnen
Bei deinem Skript gewinnst du ja in Wirklichkeit nicht alle 16 Male 4, denn jedes 32. Mal gewinnst du 8, womit du nur alle 32 Male 4 gewinnst. Das Skript sollte so sein, dass du alle 16 Male 4 gewinnst UND alle 32 Male 8.
Kurz gesagt: Jedes 32. Mal gewinnst du 8, was dich darum bringt ZUSÄTZLICH auch noch 4 zu gewinnen.
Hoffe das ist einigermaßen verständlich. -
Kurz gesagt: Jedes 32. Mal gewinnst du 8, was dich darum bringt ZUSÄTZLICH auch noch 4 zu gewinnen.
Habe mal das Script zum generieren der Liste abgeändert. Stimmt es denn nun?
Also beim 16. Spiel gewinnt man das 4-fache, beim 32. Spiel das 4-fache UND das 8-fache, also das 12-fache des Einsatzes. (usw.)
Gruß,
sneerfire -
Hallo,
leider ist das Skript so noch nicht ganz richtig. Z. B. beim 16. Spiel, wo der Spieler 4 mal seinen Einsatz zurückbekommt, hat er ja in Wirklichkeit nur einen Gewinn von 3.
Er zahlt seinen Einsatz: -15 - 1 = -16
Er bekommt seinen Einsatz 4 x zurück: -16 + 4 = -12 und NICHT -11
deswegen gewinnt der Spieler bei dir auch auf lange Sicht. Ab dem 400. Spiel kommt er bei deinem Skript nicht mehr in die Miesen.
Ich hab das jetzt auch mal schnell programmiert (obwohl ich php auf meinem Rechner nicht installiert habe und seit Jahren kein php mehr programmiert habe... bin ich nicht nett?? )
http://cga.lima-city.de/spiel.php (mit echten Zufallszahlen)
http://cga.lima-city.de/spiel_2.php (nicht zufällig)
der Quellcode:
srand(microtime()*1000000); //für die Zufallszahlen $Konto = 0; $Gewinn = 0; $Zufallszahl = 0; for($count = 1; $count < 1000; $count++){ $Zufallszahl = rand(1, 100000); // oder: $Zufallszahl++; für nicht zufälliges Spiel $Gewinn = -1; //der Spieler muss seinen Einsatz abgeben if($Zufallszahl % 16 == 0) $Gewinn = $Gewinn + 4; if($Zufallszahl % 32 == 0) $Gewinn = $Gewinn + 8; if($Zufallszahl % 62 == 0) $Gewinn = $Gewinn + 16; if($Zufallszahl % 144 == 0) $Gewinn = $Gewinn + 36; $Konto = $Konto + $Gewinn; echo \"<b>Spiel Nr. </b>\"; echo $count; echo \" | Gewinn/Verlust: \"; echo $Gewinn; echo \" | Kontostand: \"; echo $Konto; echo \"<br> <br>\" ; }
Ich hoffe das stimmt so ungefähr.
Auf jeden Fall liegt bei meinem Skript der Kontostand des Spielers auf lange Sicht eher bei Null. -
Uh.. habe es nun geändert und auf sehr langer Sicht, sehe ich einen starken Verlust des Betreibers...
Habe mal eingestellt, dass nur das Spiel angezeigt wird, wo der Kontostand >= 1200 ist.
http://sneerfire.lima-city.de/liste.php war ja der Link.
Gruß,
sneerfire -
Wie wärs, wenn du einfach mal deinen Quellcode posten würdest. Denn ohne den können wir nur vermuten.
-
Wie wärs, wenn du einfach mal deinen Quellcode posten würdest. Denn ohne den können wir nur vermuten.
Denke mal eher, das was hier besprochen wird hat nichts mit dem Code zu tun ;)
Eher nur mit den Wahrscheinlichkeiten.
Die Seite welche die ganzen Games generiert soll ja auch nur eine theoretische Liste anzeigen, die es schneller generieren kann als ich schreiben ^^
Aber ich habe mal die Wahrscheinlichkeiten in meinem Script übernommen (wo ich die für brauche ;) ) und ich komme nun auf +- 0 bei 1Mio simulierten Games. Also dürfte so alles klappen :=)
Ich hoffe mal, wenn ich andere Wahrscheinlichkeiten einstelle, geht es auch noch. Wenn nicht schreibe ich hier.
Danke noch einmal an euch beiden.
Gruß,
sneerfire -
jetzt merke ich erst, dass eine Wahrscheinlichkeit von bandi999 falsch war (das kann man mir auch mal sagen!!! )
Und siehe da:
http://cga.lima-city.de/korrekt.php
es funktioniert. Ich hab wie du auch einen Kontostand ungefähr bei Null bei einer Millionen Spielen. -
Hallo cga,
ich hatte mich nicht mehr mit der Sache hier beschäftigt. Ich vermute du meinst 1/64 statt 1/62 oder? Da habe ich mich in der Tat verrechnet, sorry wenn du deshalb Zeit verloren hast. An deiner Simulation wundert mich allerdings, dass es immer nur Ergebnisse <= 0 gibt. Kann ich nicht erklären.
Gruß
Manni -
bandi999 schrieb:
Ist nicht schlimm, ich bin ja selber schuld, dass ich das stur abgetippt habe.
Hallo cga,
ich hatte mich nicht mehr mit der Sache hier beschäftigt. Ich vermute du meinst 1/64 statt 1/62 oder? Da habe ich mich in der Tat verrechnet, sorry wenn du deshalb Zeit verloren hast.An deiner Simulation wundert mich allerdings, dass es immer nur Ergebnisse <= 0 gibt. Kann ich nicht erklären.
Bei dieser Simulation ist keinerlei Zufall drin. Es wird jedes Spiel abgezogen und der Gewinn, den es ab und zu gibt, kann den negativen Kontostand bestenfalls wieder auf Null bringen.
Gruß
Manni
Eine wirkliche Simulation (mit dem Zufallszahlengenerator von php) wäre das:
http://cga.lima-city.de/korrekt_zufall.php
und da kommen auch positive Kontostände vor. -
Hallo,
dann wird die Sache klar. Ich hatte mir den von dir geposteten Quelltext angesehen und der war ja mit Zufallszahlen. Offenbar ist das nicht dein Script korrekt.php.
Danke und Gruß
Manni -
So... hatte nun endlich Zeit und habe versucht mein Spiel so umzubauen, dass es mehrere Gewinne gleichzeitig unterstützt.
Leider ist dieses sehr schwer umsetzbar...
Nun meine neue Frage:
Gibt es eine Möglichkeit, eine Formel zu haben, mit der die Wahrscheinlichkeiten so berechnet werden, dass nur EIN Gewinn gleichzeitig möglich ist? -
sneerfire schrieb:
So... hatte nun endlich Zeit und habe versucht mein Spiel so umzubauen, dass es mehrere Gewinne gleichzeitig unterstützt.
Leider ist dieses sehr schwer umsetzbar...
Nun meine neue Frage:
Gibt es eine Möglichkeit, eine Formel zu haben, mit der die Wahrscheinlichkeiten so berechnet werden, dass nur EIN Gewinn gleichzeitig möglich ist?
Mmh.. da habe ich dich wohl durcheinander gebracht.
Es sind die selben Wahrscheinlichkeiten!!
Das Problem ist, dass du bei deiner Liste z. B. die Wahrscheinlichkeit von 1/16 dadurch simulierst, dass der Gewinn alle 16 Male vorkommt und dass beißt sich natürlich wenn du noch einen Gewinn hast (mit Wahrscheinlichkeit 1/32) der alle 32 Male vorkommen soll. Darin liegt das ganze Missverständnis.
Und wenn wir jetzt sagen: OK, dann gibt es alle 16 Male den Gewinn 4 und zusätzlich alle 32 Male den Gewinn 8, usw. dann geht die Sache zwar auf aber wir haben eigentlich eine andere Aufgabenstellung, die es erlaubt mehrere Gewinne zu haben, also 4 und 8 und 16.
Warum kommt da kein höherer Erwartungswert raus, als bei einem Spiel, wo ich nur einen Gewinn gleichzeitig haben kann?
Ganz einfach deswegen, weil die Wahrscheinlichkeit gar nichts zu gewinnen beim höher ist. Wenn ich den Gewinn von 4 nicht kriege, kann ich auch den Gewinn von 8, 16 und 36 nicht bekommen.
Das gleicht das ganze wieder aus und wir haben auf lange Sicht einen Gewinn von 0.
Für ein Spiel mit nur einem Gewinn, brauchst du die erstmal die Wahrscheinlichkeiten, die wir schon berechnet haben:
1/16 ==> Gewinn 4
1/32 ==> Gewinn 8
1/64 ==> Gewinn 16
1/144 ==> Gewinn 36
und jetzt noch die Wahrscheinlichkeit, dass man gar nichts gewinnt:
1 - 1/16 - 1/32 - 1/64 - 1/144 = 509/576
Die Wahrscheinlichkeiten müssen 1 ergeben, da es keine anderen Ausgänge mehr geben darf.
jetzt erweitern wir die Brüche, so dass die Nenner 576 werden
36/576 ==> Gewinn 4
18/576 ==> Gewinn 8
9/576 ==> Gewinn 16
4/576 ==> Gewinn 36
509/576 ==> Gewinn 0
du lässt dir eine Zufallszahl im Bereich von 0 bis 575 generieren und:
für 0 bis 508 gibt es nix (von 0 bis 508 sind es 509 Zahlen)
für 509 bis 544 gibt es 4 (von 509 bis 544 sind es 36 Zahlen)
für 545 bis 563 gibt es 8
usw.
so sieht das Skript mit Zufallszahlen dann aus:
<?php srand(microtime()*1000000); $Konto = 0; $Gewinn = 0; for ($count = 1; $count <= 1000; $count++) { $Zufallszahl = rand(0,575); $Gewinn = -1; if ($Zufallszahl < 509) { $Gewinn += 0; /*überflüssig*/ } else { if ($Zufallszahl < 545) { $Gewinn += 4; } else { if ($Zufallszahl < 563) { $Gewinn += 8; } else { if ($Zufallszahl < 572) { $Gewinn += 16; } else { if ($Zufallszahl < 576) { $Gewinn += 36; } } } } } $Konto = $Konto + $Gewinn; echo \"Spiel Nr.\"; echo $count; echo \" | Gewinn/Verlust: \"; echo $Gewinn; echo \" | Kontostand: \"; echo $Konto; echo \"<br> <br>\" ; }?>
( http://cga.lima-city.de/gewinne_zufall.php )
und ohne Zufallszahlen geht es ganz ähnlich. Einfach
$Zufallszahl = rand(0,575); durch
$Zufallszahl++; $Zufallszahl = $Zufallszahl % 576; ersetzen.
http://cga.lima-city.de/gewinne.php
Wie man sieht, steht bei jedem 576. Spiel der Kontostand wieder auf 0.
*PUUUH*
Ich hoffe jetzt ist alles klar. Mich würde aber mal interessieren, wofür du das alles brauchst. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage