#1 11. Mai 2011 Spielautomaten - Mathe HI Ich habe ein großes Problem. Und zwar möchte ich einen Glücksspielautomaten Programmieren (Slotmaschine) und bin in sachen Mathematik Hoffnungslos verloren. Der Slot "muss" 5 Walzen haben, das vorneweg. Als Programmierer bin ich hier natürlich befugt die Walzern dieses Slots nach meinem Willen auszurichten. Undzwar weiß ich nicht wie ich Gewinchancen und Gewinnsummen platzieren soll. Mein erster ansatz war dieser: Der Spieler zahlt 10EUR ein und darf einmal Drehen (spielen). Bei 1000 Spielen ohne das der Slot Gewinne ausschütte hätte ich also 10000EUR Gewinn. Das wäre natürlich nicht schön für den Spieler und zu 1000 Spielen würde es so nie kommen also muss ich von diesem Gewinn wieder was an den Spieler zurück geben. Ich sage jetzt einfach mal 20% behalte ich, der rest geht an den Spieler (ka ob das ein sinnvoller wert ist). Also gehen 8000EUR raus, doch wie teile ich diese 8000EUR ein? Wen ich nur eine Gewinnmöglichkeit bieten würde, ich glaube in der Mathematik nennt man das Event, dann würde ich 8000EUR bei 1000 Spielen einmal ausschüten. Doch wie hoch müsste hier die Prozentuale Gewinnchance sein jeh Dreh? Da es nun aber sehr demotivierend ist jedes mal 10EUR in den Automaten zu stecken und zu hoffen irgendwann in den nächsten 1000 Zügen mal einen Gewinn zu machen sollte es natürlich mehrere Events geben. Ich teile diese 8000EUR einfach mal in 10 Events ein: 01: 10EUR 02: ... ohje.... ja da fängt es schon wieder an. Ich habe keine Ahnung ob es nicht vielleicht irgendeine Gesetzlichkeit gibt, wie die Gewinne auszusehen haben damit der Betreiber seinen Slot gewinnbringend laufen lassen kann. Naja, falls man sie dennoch wahllos einteilen kann: 01: 10EUR 02: 25EUR 03: 50EUR 04: 100EUR 05: 150EUR 06: 300EUR 07: 500EUR 08: 750EUR 09: 1000EUR 10: 2500EUR Wie gesagt, diese Gwinne sind jetzt völlig wahllos eingetragen. Doch wie müsste hier die Prozentuale Gewinnchance aussehen jeh Spielzug damit ich am ende weiterhin meine 20% Gewinn habe?!?! hoffe mir kann jemand helfen. + Multi-Zitat Zitieren
#2 11. Mai 2011 AW: Spielautomaten - Mathe Es gibt in der Wahrscheinlichkeitsrechnung einen sogenannten Erwartungswert. Dieser ist einfach die Summe aller möglichen Events, bzw. derer Preise multipliziert mit der wahrscheinlichkeit. Sagen wir du willst auf 10EUR 8EUR austeilen und 2EUR in der Bank behalten. Der Erwartungswert muss nun also insgesamt 8EUR zeigen. (oder -2EUR wenn du die 10EUR einsatz mitrechnest) Beispiel 1 Event 100EUR mit 3%, 1 Event 50EUR mit 6% 1Event 10EUR mit 30% E=100*0,03+50*0,06+10*0,3+0[nix gewinnen]*x[restliche Wkeit] = 9 [Nettogewinn] E=90[100-10]*0,03+40[50-10]*0,06+0[10-10]*0,3-10[nix gewinnen]*x[restliche Wkeit] = -1 [Bruttogewinn] Somit erhält im Durchschnitt der Spieler 9EUR pro Spiel. Da er 10EUR bezahlen muss, hast du 10% Gewinnmarge Du musst also, wenn du die Preise wie oben benutzen willst einfach irgendwelche Wahrscheinlichkeiten Einsetzen und gucken, wie sich der Erwartungswert verhält und solange an den einzelnen Wkeiten Rumspielen, sodass du insgesamt halt auf 8 oder -2 kommst. Berechnen lässt sich das Ganze sicherlich auch. Sagen wir es gibt nur 10EUR Gewinne. Die W'keit dafür muss 0,8 sein, damit du auf 8EUR Erwartungswert kommst. Wenn du jetzt 20EUR Gewinne haben willst, musst du zunächst überlegen, wie groß dein "Anteil" an 20EUR gewinnen sein soll. Sagen wir es soll "gleichmäßig" 10EUR und 20EUR rauskommen. Teile die 10EUR Gewinne in 2 Klassen: 10EUR*0,4+10EUR*0,4=8 Nun Multiplizierst du den Preis im zweiten Summanden *2 und die W'keit /2 also 10EUR*0,4+20EUR*0,2=8 Im Allgemeinen also, wenns 10 Preise geben soll zunächst alle Wahrscheinlichkeiten Aufteilen in 10*(10EUR*0,08) und dann die Wahrscheinlcihkeiten Teilen und die Preise Multiplizieren mit Faktoren, die du gerne Hättest. Möglich wärs auch das Ganze ungleich zu gewichten 10EUR*0,6+10EUR*0,2=8 => 10EUR*0,6+25EUR*0,08=8 So gibts öfter Kleine Preise und dafür seltener große, kommst aber aufs selbe hinaus Das Ganze so auszubalancieren, dass du nciht nur 20% schnitt hast, sondern dass dein Kunde auch süchtig vor dem AUtomaten sitzt ist allerdings ne Ganz andere Sache. + Multi-Zitat Zitieren
#3 11. Mai 2011 AW: Spielautomaten - Mathe Also wie es bei Automaten genau aussieht weiß ich nicht doch ich würde einfach die Wahrscheinlichkeit definieren in der eine Konstelation kommt und je höher die Wahrscheinlichkeit ist deso kleiner ist die Gewinnausschüttung... sagen wir bei jedem 10 mal drehen kommen Trauben, dann gibst du 9EUR zurück damit du auch gewinn machst, je Unwahrscheinlicher das es ist das etwas kommt umso höher ist die Ausschütung. mfg + Multi-Zitat Zitieren
#4 12. Mai 2011 AW: Spielautomaten - Mathe @bloodyphoenix: boar klasse hätte nie gedacht das es mir jemand so ausführlich erklärt. Besten dank bin dir mega was Schuldig. + Multi-Zitat Zitieren
#5 12. Mai 2011 AW: Spielautomaten - Mathe Gerne doch. Hatte mal Wahrscheinlichkeitsrechung in der Uni und find das Thema durchaus interessant. Ich hoffe nur es war verständlich genug. Ansonsten, falls noch was Unklar ist, frag nach^^ + Multi-Zitat Zitieren
#6 12. Mai 2011 Zuletzt von einem Moderator bearbeitet: 15. April 2017 AW: Spielautomaten - Mathe Nein bisher habe ich noch keine Fragen. Hab auch direkt etwas in PHP geschrieben: PHP: $investment = 1000 ; $fees = 0.84 ; //Erwartungsgehalt der Ausgezahlt werden soll $events = array( 0.5 , 1 , 2 , 5 , 7.5 , 10 ); //Events class goodLuck { private $investment ; private $fees ; private $events ; function __construct ( $investment , $fees , $events ) { $this -> investment = $investment ; $this -> fees = $fees ; arsort ( $events ); $this -> events = $events ; $this -> setEvents (); } private function setEvents ( $getTerm = true ) { $countEvents = count ( $this -> events ); //Event anzahl $chanceForAllEvents = $this -> fees / $countEvents ; //Event Chancen aufteilen nach Anzahl der Events //Events einen Preis und eine Chance zuordnen foreach( $this -> events as $key => $value ) { $chanceForThisEvent = $chanceForAllEvents / $value ; $prizeForThisEvent = $this -> investment * $value ; $this -> events [ $key ] = array( "ID" => $key , "multiplier" => $value , "prize" => $prizeForThisEvent , "chance" => $chanceForThisEvent ); } //Einen Term generieren und anzeigen if ( $getTerm ) { $term = 0 ; foreach( $this -> events as $key => $value ) { $term = $term + ( $value [ "prize" ] * $value [ "chance" ]); echo " + (" . $value [ "prize" ]. " * " . $value [ "chance" ]. ")<br>" ; } echo "------------------------------------------<br>" . $term . "<br>" ; } return true ; } public function checkForWin () { $aRand = $this -> random_float ( 0 , 1 ); //Zufallszahl $stack = 0 ; //Ein Stack erstellen, dieser wird jedesmal um die höhe der "vertanen" chance erhöt. Verhindert das Chancen Prozente verloren gehen bei Events kleinerer Preistufen foreach( $this -> events as $key => $value ) { $stack = $stack + $this -> events [ $key ][ "chance" ]; if ( $aRand <= $stack ) { return $this -> events [ $key ]; } } return false ; } private function random_float ( $min , $max ) { return ( $min + lcg_value ()*( abs ( $max - $min ))); }} $aclass = new goodLuck ( $investment , $fees , $events ); $i = 0 ; $gewinn = 0 ;while( $i < 1000 ) { $gewinn = $gewinn + $investment ; $nowwin = $aclass -> checkForWin (); if ( is_array ( $nowwin )) { $gewinn = $gewinn - $nowwin [ 'prize' ]; if ( $nowwin [ 'multiplier' ] != 1000 ) { echo "<span style='color:red;'>" . $nowwin [ 'prize' ]. "</span> - " ; } else { echo "<span style='color:blue;'>" . $nowwin [ 'prize' ]. "</span> - " ; } } else { echo "<span style='color:green;'>1000</span> - " ; } $i ++; }echo "<br>Gewinn: " . $gewinn ; Ausgabe ist dan in etwa so: {img-src: //www.bilderkiste.org/show/thumbnail/4130520494631/bankwin_02.jpg} Grün: die Bank Gewinnt Rot: der Spieler Gewinnt Joar wie man sieht eine ganz coole Slot klasse. Natürlich fehlt da jetzt völlig die Optik, nur das Ergebnis wird angezeigt. Aber die Optik wird dann einfach nach dem Ausgang dieses Spiels Generiert. Man kann oben einfach die Events erweitern oder kürzen wird dann alles Automatisch berechnet Kann man auch für Rubel lose etc verwenden. + Multi-Zitat Zitieren