Jak zapewnić odpowiedni współczynnik wypłat dla automatu do gry?

11

Przeprowadziłem wiele badań nad generatorami liczb losowych dla automatów do gier, obliczeniami zatrzymania rolek i tym, jak fizycznie dać użytkownikowi szansę na wygraną.

Nie mogę zrozumieć, jak właściwie zapewnić, że maszyna będzie miała wypłatę (powiedzmy) 95%.

Mam więc kołowrotek z 22 miejscami na nim. Wypełniony 16 różnymi symbolami.

Kiedy otrzymam mój losowy numer, mod podziel go przez 64 i otrzymam resztę, przeskakuję do tabeli zapętlonej, aby zobaczyć, jak wirtualny stop odnosi się do pozycji bębna.

Teraz, kiedy już wiem, jak zatrzymają się rolki, czy upewniam się, że współczynnik wypłat jest prawidłowy? Jak mogę się upewnić, że za każdego włożonego dolara maszyna wypłaci 0,95 centa?

Dzięki za pomysły.

Pracuję w ActionScript, jeśli to pomaga w kwestiach językowych, ale ogólnie szukam teorii.

Edycja: Prawdziwe pieniądze są zaangażowane tylko w to, że mogą kupić więcej żetonów, aby grać więcej. Osoba nie otrzyma prawdziwych pieniędzy, jeśli faktycznie trafi na którąkolwiek z linii wypłaty.

Kris.Mitchell
źródło
2
Czy ten kod jest krytyczny dla biznesu? Czy użytkownicy wygrywają prawdziwe pieniądze?
Dave O.

Odpowiedzi:

9

To, o co pytasz, dotyczy teorii prawdopodobieństwa . Najłatwiej jest pracować z jedną rolką, a następnie rozszerzyć ją na wiele rolek, gdy zrozumiesz, jak to działa.

Zastanów się, czy masz kołowrotek, masz kilka symboli, które chcesz przypisać do ograniczników. Więcej symboli na rolce doprowadzi do większej kontroli nad końcowymi wynikami, ale będzie bardziej losowy dla gracza. Celem jest zrównoważenie liczby symboli i zatrzymań, aby maszyna była mniej losowa dla gracza i miała większą szansę.

Gdybyś miał 10 symboli i 10 przystanków, każdy symbol miałby szansę pojawienia się 1 na 10. Nie ma znaczenia, w jakiej kolejności są symbole (teoretycznie w praktyce losowość gry jest tak dobra, jak generator liczb losowych). Innymi słowy, możesz spodziewać się, że zobaczysz 10 różnych symboli w 10 spinach lub inny symbol przy każdym spinie. Szansa na zdobycie jednego konkretnego symbolu wynosi 1 na 10. Zatem na każde 10 spinów możesz spodziewać się, że zobaczysz każdy pojedynczy symbol raz. Jeśli wybrałeś 1 symbol jako „zwycięski”, gracz musiałby zagrać 10 razy, zanim wygrał. Dzięki tym informacjom ustalenie wypłaty jest dość proste. Jeśli naliczysz 1 USD za każdy obrót, będą musieli wydać 10 USD, zanim wylądują na wygranej. Jeśli oczekiwana ocena wynosi 95%, obliczenia wynoszą 10 USD x 95% = 9,50 USD. Innymi słowy, nagroda za wylądowanie na symbolu „wygranej” musi wynosić 9,50 USD, aby uzyskać oczekiwaną wypłatę w wysokości 95%. Teraz pamiętaj, że wszystko opiera się na średniej. Nie ma gwarancji, że symbol pojawi się dokładnie w 10 spinach, może zająć 100 lub 1000 spinów, a nawet tylko 1 spin. W przypadku wystarczająco długiego czasu urządzenie zapłaci średnio odpowiednią kwotę.

Aby to działało na wielu bębnach, należy pomnożyć prawdopodobieństwo wygranej dla każdego bębna. Rozważ przykład 3 rolek z 10 symbolami na każdej rolce i 1 zwycięskim symbolem na każdej rolce, jak w poprzednim przykładzie. Powiedzmy, że chciałeś, aby gracz wygrał tylko wtedy, gdy wszystkie trzy bębny pokazują jednocześnie symbol wygranej. Aby to zrobić, musisz obliczyć prawdopodobieństwo dla każdej rolki, a następnie pomnożyć prawdopodobieństwo razem. Wiemy z poprzedniego przykładu, że prawdopodobieństwo wynosi 1 na 10. Można to również zapisać jako 1/10 lub 0,1. Prawdopodobieństwo, że wszystkie trzy bębny jednocześnie wylądują na zwycięskim symbolu, wynosi 1/10 x 1/10 x 1/10 lub 0,1 x 0,1 x 0,1 lub 0,001 lub 1 na 1000. Widzimy, że jest wiele mniejsze prawdopodobieństwo pojawienia się zwycięskiego symbolu na wszystkich trzech rolkach jednocześnie. Gracz musiałby zakręcić średnio 1000 razy, zanim wygra. Gdyby każdy obrót wynosił 1 $, musiałby wydać 1000 $, aby wygrać. Obliczony procent wygranej wynosi: 1000 $ x 95% ** = 950,00 $.

To teoria w pigułce. Reszta polega na równoważeniu różnych prawdopodobieństw, aby gra wyglądała bardziej interesująco.

W twoim przypadku, jeśli masz 22 przystanki i 16 symboli. Oznacza to, że będziesz mieć 6 symboli, które są takie same jak co najmniej jeden inny symbol. Dokładne prawdopodobieństwo pojawienia się określonego symbolu zależy od całkowitej liczby wystąpień tego symbolu na rolce. Ile każdego symbolu znajduje się na każdej rolce, zależy od Ciebie.

Jako przykład załóżmy, że masz 15 unikalnych symboli i 7, które są duplikatami. Szansa na pojawienie się jednego z duplikatów wynosi 7 na 22, 7/22 lub 32%. Gdybyś miał 1 rolkę, przy 1 $ obrotu, gracz wylądowałby na jednym z duplikatów 32 razy w 100 spinach. Wypłata jest obliczana jako (1 / (32/100)) x 95% x $ koszt. Więc jeśli kosztowałby 1 USD za obrót, gracz płaciłby 2,97 USD za każdym razem, gdy pojawiał się jeden z duplikatów.

Jako kolejny przykład, gdybyś miał 3 rolki i kosztował 2 USD za obrót, obliczyłbyś wypłatę w następujący sposób: (1 / (32/100 x 32/100 x 32/100)) x 0,95 x koszt = 30,5 x 95% x 2 USD = 57,95 USD wypłaty. Prawdopodobieństwa innych nie duplikatów można obliczyć w następujący sposób: (1 / (1/22 x 1/22 x 1/22)) x 0,95 x koszt = 10648 x 0,95 x 2 = 20231.20. To dość duża liczba, ale prawdopodobieństwo pojawienia się dowolnej zwycięskiej sekwencji jest dość niskie (około 9x10 ^ -5).

W ostatnich przykładach różnice są dość ekstremalne, gracz albo wygrywa 58 $ bardzo często, albo 20231 $ prawie nigdy, bez żadnych różnic pomiędzy nimi. Sztuka angażowania gry polega na tworzeniu większych możliwości wygranej przy różnych kwotach. Często osiąga się to poprzez mieszanie bębnów z różnymi prawdopodobieństwami. Więc zamiast każdej rolki
ta sama liczba każdego symbolu, jedna rolka może mieć więcej symboli lub więcej jednego rodzaju symbolu i tak dalej. Wzór na obliczenie prawdopodobieństwa jest taki sam jak poprzednio, pamiętaj tylko, aby użyć właściwych proporcji dla każdej rolki. Na przykład, jeśli masz rolkę A z 22 przystankami i 3 wystąpieniami symbolu, rolkę B z 26 przystankami i 2 wystąpieniami symbolu oraz rolkę C z 20 przystankami i 5 wystąpieniami symbolu, formuła wygląda następująco: (1 / (3/22 x 2/26 x 5/20)) x 95% x $ koszt.

I to wszystko. Mam nadzieję, że nie popełniłem zbyt wielu błędów w przykładach, więc nadal będziesz w stanie uznać je za przydatne: P

** Uwaga dotycząca notacji 95% jest identyczna z 0,95. 32/100 jest identyczny z 0,32, 7/22 jest identyczny z 0,31818 .. itd.

lukevanin
źródło
Niesamowity. Właśnie zaoszczędziłeś mi dużo pracy. Przeczytałem wiele dokumentów o tym, jak powinny działać automaty, ale ta odpowiedź naprawdę sprzedała mi ją w kategoriach laika. Dzięki!
Stephen
7

Chcesz, aby oczekiwana wartość wynosiła 0,95. Mówiąc prościej, jest to suma probability * payoutdla każdego stanu.

Metoda brutalnej siły polegałaby na iteracji we wszystkich stanach 22 ^ 3 (zakładając, że masz 3 rolki), zsumowaniu wypłaty i podzieleniu sumy przez 22 ^ 3. Ponieważ jednak większość stanów prawdopodobnie nic nie wypłaca, może być łatwiej wypracować wszystkie stany, które wypłacają.

Na przykład, jeśli miałeś 1 syrop Bell na rolce, to prawdopodobieństwo

[Bell] [Bell] [Bell]

byłoby 1/22 ^ 3. A jeśli miałeś 2 wiśnie na rolkę, to prawdopodobieństwo

[Cherry] [Cherry] [any]

byłoby 1/11 ^ 2.


EDYCJA: Powyższe mówi tylko, jak sprawdzić, czy wypłaty dają pożądaną stopę zwrotu. Jako prosty przykład rozważmy grę, w której płacisz 1 $ za przerzucenie 2 monet. Oto trzy schematy wypłat, które dają stopę zwrotu w wysokości 0,95:

  1. Dwie głowy płacą 3,80 $, wszystko inne nic nie płaci
  2. Dwie głowy lub dwa ogony płacą 1,90 USD, wszystko inne nic nie płaci
  3. Dwie głowy nic nie płacą, wszystko inne kosztuje 1,26 $

Który jest bardziej „zabawny”? Ty mi powiedz...

celion
źródło
To powiedziawszy, żaden automat w ciągu ostatnich kilkudziesięciu lat nie obraca takich rolek. Jeśli trzy dzwony wypłacą jackpoty, pojawią się nieproporcjonalnie mniej, bez względu na to, ile ich będzie na fizycznym bębnie.
3
Ja po prostu zajmuję się matematyką - sprawianie, by zabawa była czyjąś pracą :)
celion
@joe - Zgadzam się, dzwony będą na bębnie o tonę mniej niż reszta symboli. @celion Nie rozumiem jeszcze w pełni. Powiedzmy, że mam rolki (mam 5), a użytkownik naciska przycisk, aby zagrać w grę. Zbieram kolejne 5 liczb losowych, robię cielęta, aby znaleźć przystanki i pokazuję symbole. Jak stopa wypłaty wpływa na liczby losowe i stop? Czy ustawiam wypłatę za pomocą symboli znajdujących się na rolce, a także kwoty o wysokiej> niskiej wypłacie symboli na rolce?
Kris.Mitchell
@ Kris-Mitchell - Może nie rozumiem, jak działają automaty do gier. Zakładałem, że dla każdego możliwego wyniku wypłata jest stała. Jeśli symbole na rolce zmieniają się w każdej rundzie, matematyka staje się nieco trudniejsza, ale nadal powinieneś być w stanie ustalić (offline, ołówkiem i papierem) prawdopodobieństwo danego stanu. To po prostu daje sposób na upewnienie się, że zestaw wypłat da pożądaną (średnią) stopę zwrotu; istnieje nieskończona liczba sposobów przypisywania wypłat, biorąc pod uwagę to ograniczenie, więc od ciebie zależy wybór „zabawnego”.
celion
@celion - nie chciałem cię przegapić, a jeśli ktoś to czyta, popraw mnie, jeśli się mylę, ale wypłata jest ustalona. Nie wierzę, że rolki zmieniają się w każdej rundzie. Myślę, że szpule do automatów wideo są po prostu znacznie większe niż prawdziwa mechaniczna maszyna do gier. Nawiasem mówiąc, uważam, że najbardziej podobałaby mi się opcja 2 lub 3. Dwa są wystarczająco ryzykowne, aby stanowić wyzwanie, w którym możesz zarabiać pieniądze, jednocześnie wiedząc, że przegrasz. Z drugiej strony trzy wydają się lepsze, ponieważ wydaje się, że masz większą szansę na wygraną.
Kris.Mitchell
1

Najłatwiejszym i bardziej niezawodnym sposobem na to nie jest symulacja bębnów, ale raczej wewnętrzna kość, która wybiera wygrane przez gracza, a następnie po prostu zapełnianie bębna proceduralnie (lub zapisanie dużego zestawu gdzieś, ale prawdopodobnie zajmie to więcej czasu robić).

Kpt. Czerwony
źródło
0

Inni nie dotknęli tego trochę:

... jak właściwie upewnić się, że maszyna będzie miała ocenę wypłaty ..

Jeśli użyjesz liczb całkowicie losowych, nie ma pewności. Możesz jednak prowadzić statystyki wypłat i dostosowywać prawdopodobieństwo wypłaty w czasie wykonywania za pomocą pętli sprzężenia zwrotnego .

Jeśli od jakiegoś czasu nie było żadnej wypłaty, zwiększ prawdopodobieństwo wygranej i odwrotnie.

Możesz uruchomić symulacje przebiegów (kilka miliardów iteracji), aby upewnić się, że pętla sprzężenia zwrotnego działa zgodnie z przeznaczeniem.

Jari Komppa
źródło
1
Twoje rozwiązanie jest niepotrzebne. Idealny generator liczb losowych (RNG) zbliży się do dokładnej oceny wypłat w czasie. Chociaż prawdą jest, że korzystanie z domyślnej wbudowanej funkcji RNG jest naprawdę nie do zaakceptowania (głównie ze względu na przewidywalność), poprawnym rozwiązaniem jest użycie lepszego RNG, np .: en.wikipedia.org/wiki/Random_number_generation#Physical_methods . Ponadto, w tym logika gry, która jest nieprzypadkowa lub „poprawia” wskaźnik wypłaty, jak sugerujesz, jest nielegalny w większości miejsc. Jest to w porządku dla efektownej strony internetowej, ale jest to kompletny non-start dla aplikacji z prawdziwego świata.
Luke Van W
1
@lukevanin, jest to prawnie wymagane w innych miejscach, więc naprawdę chodzi o zrozumienie kontekstu.
Peter Taylor,
0

Zauważ, że wszystkie dotychczasowe odpowiedzi zakładają, że masz idealną RNG do pracy. Czysty program RNG jest w rzeczywistości pseudo-RNG, w skrócie PRNG, ponieważ ta sama wartość wejściowa (ziarno) zawsze generuje tę samą sekwencję liczb losowych, więc PRNG jest z natury przewidywalny.

Oczywiście trudno jest odróżnić „prawdziwe” od „pseudo” RNG po stronie klienta, szczególnie przy małej wielkości próby, ale jest różnica - w aplikacji, w której chodzi o pieniądze i odpowiedzialność prawną, nie ryzykować. Jeśli potrzebujesz RNG, jedyną gorszą rzeczą niż brak RNG jest posiadanie zepsutego RNG, nie wiedząc o tym, więc jest to jeden z obszarów, w którym Twoja firma nigdy nie powinna skracać narożników ani uczyć się w locie.

Istnieją dobre algorytmy PRNG, ale nigdy nie będą pasować do fizycznego źródła entropii. Tak więc, aby matematyka działała zarówno w praktyce, jak i w teorii, upewnij się, że używasz najlepszego możliwego RNG - leży to w najlepszym interesie Twojej firmy, zarówno pod względem prawnym, jak i finansowym.

Hackworth
źródło
0

Bardzo prostym podejściem może być po prostu iteracja każdego możliwego wyniku obrotu i zsumowanie połączonych wygranych w porównaniu do łącznej kwoty zebranych pieniędzy.

Zacznij od utworzenia układów kół, w razie potrzeby zezwól na duplikowanie symboli. Określ zwycięskie wzorce i pożądane wypłaty. Uruchom wzór koła przez algorytm określający całkowitą wypłatę, podziel przez zebrane pieniądze, to jest twój współczynnik wypłat.

Jeśli jest zbyt wysoka, dodaj więcej spacji lub mniej płatnych symboli, LUB obniż wypłatę wzoru (tj. Trzy pojedyncze słupki mogą wynosić 10 USD lub 5 USD). Uruchom ponownie algorytm, aż zostanie określony żądany współczynnik wypłaty.

Pozwala to zachować równe wypłaty (nie 4,58 USD za zwycięski wzór, można użyć 5 USD). Może nie być w stanie wymyślić dokładnej wypłaty, powiedzmy 95%, ale z poprawkami możesz się zbliżyć.

Oto przykładowy algorytm służący do określania współczynnika płac układu kół:

payout = 0.0
collected = 0.0
ratio = 0.0
bet = 1.0
FOREACH symbol1 IN wheel1
  FOREACH symbol2 IN wheel2
    FOREACH symbol3 IN wheel3
      payout = payout + DetermineWinnings(symbol1, symbol2, symbol3, bet)
      collected = collected + bet
    NEXT
  NEXT
NEXT
ratio = payout / collected
Doug.McFarlane
źródło