Як забезпечити відповідне співвідношення виплат для ігрового автомата?


11

Я провів багато досліджень генераторів випадкових чисел для ігрових автоматів, розрахунків зупинки котушки та як фізично дати користувачеві хороший шанс на перемогу.

Я не можу зрозуміти, як правильно гарантувати, що машина буде мати рейтинг виплат (допустимо) 95%.

Отже, у мене встановлена ​​котушка з 22 пробілами. Заповнений 16 різними символами.

Коли я дістаю свій випадковий номер, мода ділить його на 64 і отримує залишок, я переходжу до таблиці з циклом, щоб побачити, як віртуальна зупинка стосується положення котушки.

Тепер, коли я зрозумів, як будуть зупинятися барабани, чи я переконуюсь у правильності коефіцієнта виплат? За кожен долар, який вони вкладають, як переконатись, що машина виплатить .95 копійок?

Дякую за ідеї.

Я працюю над сценарієм дій, якщо це допомагає з мовними питаннями, але взагалі я просто шукаю теорію.

Редагувати: реальні гроші пов'язані лише з тим, що вони можуть придбати більше жетонів, щоб грати більше. Реальні гроші, які виплачуються людині, не збираються, якби вони насправді потрапляли на будь-яку із ліній виплат.


2
Це критичний бізнес-код? Чи користувачі виграють реальні гроші?
Дейв О.

Відповіді:


9

Те, що ви запитуєте, пов'язане з теорією ймовірностей . Найпростіше працювати з однією котушкою, а потім розширити її на кілька барабанів, як тільки ти зрозумієш, як вона працює.

Подумайте, якщо у вас була котушка, у вас є кілька символів, які ви хочете призначити зупинкам. Більше символів на барабані призведе до більшого контролю над кінцевими результатами, але буде почувати себе більш випадковим для гравця. Мета - збалансувати кількість символів і зупинок, щоб машина відчувала себе менш випадково перед гравцем, і їм подобається більше шансів.

Якби у вас було 10 символів і 10 зупинок, кожен символ мав би шанс з’явитися 1 на 10. Не має значення, в якому порядку знаходяться символи (теоретично, на практиці випадковість гри є такою ж доброю, як і ваш генератор випадкових чисел). Іншими словами, ви можете розраховувати, що ви побачите 10 різних символів за 10 обертів або різний символ на кожному оберті. Шанс отримати один конкретний символ - 1 на 10. Отже, на кожні 10 обертів ви можете розраховувати побачити кожен окремий символ один раз. Якщо ви вибрали 1 символ як символ "перемоги", гравцеві доведеться грати 10 разів, перш ніж вони виграли. З цією інформацією виправити виплату досить просто. Якщо ви стягнете з них 1 долар за кожний оберт, їм доведеться витратити 10 доларів, перш ніж приземлитися на виграш. Якщо ваш очікуваний рейтинг становить 95%, розрахунок становить $ 10 x 95% = $ 9,50. Іншими словами, приз за посадку на символі "виграш" повинен становити 9,50 дол. США, щоб очікувана виплата становила 95%. Тепер пам’ятайте, що все це базується в середньому. Немає гарантії, що символ з’явиться рівно за 10 обертів, це може зайняти 100 або 1000 обертів, а то й лише 1 оберт. За досить тривалий час машина в середньому заплатить правильну суму.

Щоб змусити це працювати на декількох барабанах, вам потрібно помножити ймовірність виграшу кожного барабана. Розглянемо приклад 3 барабани з 10 символами на кожній барабані та 1 символ виграшу на кожній барабані, як у попередньому прикладі. Скажімо, ви хотіли, щоб гравець виграв лише тоді, коли всі три барабани показують переможний символ одночасно. Для цього потрібно опрацювати ймовірність для кожної котушки, а потім помножити ймовірності разом. Ми знаємо з попереднього прикладу, що ймовірність дорівнює 1 на 10. Це також можна записати як 1/10, або 0,1. Імовірність того, що всі три барабани одночасно приземляться на переможний символ, становить 1/10 x 1/10 x 1/10, або 0,1 x 0,1 x 0,1, або 0,001, або 1 на 1000. Ми бачимо, що існує багато нижча ймовірність того, що символ виграшу з'явиться на всіх трьох барабанах одночасно. Гравцеві потрібно буде в середньому обертатись 1000 разів, перш ніж вони виграють. Якщо кожен спін становив $ 1, їм потрібно було б витратити 1000 доларів, щоб виграти. Розрахунок для відсотка виграшу тоді становить: 1000 доларів x 95% ** = 950,00 доларів.

Ось у двох словах теорія. Решта - це врівноваження балансування різних ймовірностей, щоб зробити гру більш цікавою.

У вашому випадку, якщо у вас 22 зупинки та 16 символів. Це означає, що у вас буде 6 символів, які є такими ж, як принаймні один інший символ. Точна ймовірність появи будь-якого конкретного символу залежить від загальної кількості появи цього символу на котушці. Скільки кожного символу на кожній барабані, насправді залежить від вас.

Як приклад, скажімо, що у вас є 15 унікальних символів і 7, які є всіма дублікатами. Шанс появи будь-якого з дублікатів становить 7 із 22, або 7/22, або 32%. Якби у вас була 1 котушка, за 1 долар за спін, гравець висаджувався б на один з дублікатів 32 рази за 100 обертів. Виплата розраховується як (1 / (32/100)) х 95% х $ вартість. Тож якби це коштувало 1 долар за спін, ви платите гравцеві 2,97 долара кожного разу, коли з'явиться один із дублікатів.

Як інший приклад, якби у вас було 3 барабани, і це коштувало 2 долари за спін, ви виплатите виплату наступним чином: (1 / (32/100 x 32/100 x 32/100)) x 0,95 x $ вартість = 30,5 х 95% х $ 2 = $ 57,95 виплата. Ви можете обчислити ймовірності інших недублів наступним чином: (1 / (1/22 x 1/22 x 1/22)) x 0,95 x $ вартість = 10648 х 0,95 х $ 2 = $ 20231,20. Це досить велика кількість, але тоді ймовірність появи будь-якої з виграшних послідовностей є досить низькою (приблизно 9x10 ^ -5).

В останніх прикладах відмінності досить екстремальні, гравець або дуже часто виграє $ 58, або $ 20231 майже ніколи, без різниці між ними. Мистецтво робити гру зайнятою - це створювати більше можливостей виграти з різними сумами. Це часто досягається змішуванням барабанів з різною ймовірністю. Тож замість кожної котушки є
однакова кількість кожного символу, одна котушка може мати більше символів або більше одного типу символів тощо. Формула для обчислення ймовірності така ж, як і раніше, просто пам’ятайте, щоб використовувати правильні співвідношення для кожної котушки. Наприклад, якщо у вас котушка A з 22 зупинками і 3 входженнями символу, котушка B з 26 зупинками і 2 входженнями символу, а також котушка C з 20 зупинками і 5 входженнями символу, формула виглядатиме так: (1 / (3/22 x 2/26 x 5/20)) x 95% x $ вартість.

І це все є. Сподіваюся, я не зробив занадто багато помилок у прикладах, тому ви все ще зможете знайти це корисним: P

** Примітка про нотації, 95% ідентична 0,95. 32/100 ідентично 0,32, 7/22 ідентично 0,31818 .. і т.д.


Дивовижний. Ви просто врятували мені багато роботи. Я прочитав багато документів про те, як повинні працювати слоти, але ця відповідь реально продала мені це з точки зору непростої людини. Дякую!
Стівен

7

Ви хочете, щоб очікуване значення становило .95. Простіше кажучи, це сума probability * payoutдля кожної держави.

Методом грубої сили було б повторити всі 22 ^ 3 стану (якщо у вас є 3 барабани), скласти виплату та розділити суму на 22 ^ 3. Однак оскільки більшість держав, ймовірно, нічого не платять, може бути простіше відпрацювати всі штати, які замість цього виплачують.

Наприклад, якщо у вас було 1 дзвоника на котушку, то ймовірність

[Bell] [Bell] [Bell]

було б 1/22 ^ 3. А якщо у вас було 2 вишні на котушку, то ймовірність

[Cherry] [Cherry] [any]

було б 1/11 ^ 2.


РЕДАКТУВАННЯ: Вище сказане лише розповідає, як перевірити, чи виплати дають бажану норму прибутку. Як простий приклад, давайте розглянемо гру, де ви платите 1 долар, щоб перевернути 2 монети. Ось три схеми виплат, за якими всі приносять прибуток в розмірі .95:

  1. Дві голови платять 3,80 долара, все інше нічого не платить
  2. За дві голови або два хвости платить 1,90 доларів, все інше нічого не платить
  3. Дві голови нічого не платять, все інше платить 1,26 долара

Який із них "веселіший"? Ти говориш мені...


Незважаючи на те, жоден ігровий автомат, зроблений протягом останніх декількох десятиліть, не обертає подібні барабани. Якщо три дзвони виплачують джекпоти, вони вийдуть непропорційно менше, скільки б не було фізичної котушки.

3
Я просто займаюся математикою - розважати це чужа робота :)
celion

@joe - я згоден, дзвони будуть на барабані на тонну менше, ніж на решті символів. @celion Я ще не розумію повністю. Скажімо, у мене є барабани (у мене 5), і користувач натискає кнопку, щоб грати в гру. Я захоплюю наступні 5 випадкових чисел, роблю обчислення для знаходження зупинок і показую символи. Яким чином показник виплат впливає на випадкові числа та зупинки? Чи потрібно встановити виплату за символами, які знаходяться на котушці, і величиною суми>> низькооплачуваними символами, що містяться на барабані?
Kris.Mitchell

@ Kris-Mitchell - Можливо, я неправильно розумію, як працюють ігрові автомати. Я припускав, що за кожним можливим результатом виплата фіксується. Якщо символи на котушці змінюються в кожному раунді, математика стає дедалі складніше, але ви все одно зможете розробити (офлайн, з олівцем і папером) ймовірність заданого стану. Це просто дає вам можливість переконатися, що набір виплат дасть бажану (середню) норму прибутку; Існує нескінченна кількість способів призначити виплати, враховуючи це обмеження, тож вибирати "веселу" вам.
цельон

@celion - Я не хотів пропустити вас, і якщо хтось читає це, виправте мене, якщо я помиляюся, але виплата виправлена. Я не вірю, що барабани змінюють кожен раунд. Я думаю, що барабани для відео слотів просто набагато більше, ніж справжній механічний ігровий автомат. До речі, я вважаю, що мені б сподобався варіант 2 або 3 найбільше. Два досить ризиковані, щоб стати викликом, де можна заробити гроші, при цьому все ще знаючи, що ви втратите. Три, з іншого боку, здаються кращими, бо відчуваєш, що маєш більше шансів на перемогу.
Kris.Mitchell

1

Простіший і надійніший спосіб зробити це - не імітуючи барабани, а мати внутрішній штамб, який вибирає те, що грає переможець, а потім просто заповнює котушку процедурно (або мати великий набір з них десь збережений, але це, ймовірно, займе більше часу, щоб зробити).


0

Інші не торкнулися цього:

.. як правильно гарантувати, що машина має рейтинг виплат ..

Якщо ви використовуєте цілком випадкові числа, немає жодного способу бути впевненим. Однак ви можете вести статистику виплат та коригувати ймовірність виплати під час виконання, використовуючи цикл зворотного зв’язку .

Якщо протягом певного часу не було виплат, зробіть більш імовірним виграш, і навпаки.

Ви можете запустити моделювання прогонів (слід виконати пару мільярдів ітерацій), щоб переконатися, що петля зворотного зв’язку працює за призначенням.


1
Ваше рішення непотрібне. Ідеальний генератор випадкових чисел (RNG) з часом підійде до точного рейтингу виплат. Хоча це правда, що використання вбудованої функції RNG за замовчуванням не дуже прийнятно (головним чином через передбачуваність), правильним рішенням є використання кращої RNG, наприклад: en.wikipedia.org/wiki/Random_number_generation#Physical_methods . Крім того, включаючи логіку гри, яка є невипадковою, або "налаштовує" рейтинг виплат, як ви вважаєте, є незаконною у більшості місць. Це чудово для химерного веб-сайту, але загальний нестандартний для реальної програми.
Люк Ван

1
@lukevanin, це вимагається юридично в інших місцях, тому це дійсно випадок розуміння контексту.
Пітер Тейлор

0

Зауважте, що всі відповіді на даний момент припускають, що у вас є ідеальний RNG для роботи. Чистий програмний RNG насправді є псевдо-RNG, або короткий PRNG, тому що одне і те ж вхідне значення (насіння) завжди генерує однакову послідовність випадкових чисел, тому PRNG по суті передбачуваний.

Звичайно, важко розрізнити "справжні" від "псевдо" РНГ на стороні клієнта, особливо з невеликим розміром вибірки, але є різниця - у програмі, де залучені гроші та юридична відповідальність, я б не ризикувати. Якщо вам потрібен RNG, єдине, що гірше, ніж відсутність RNG - це зламаний RNG, не знаючи цього, тому це одна з областей, де ваша компанія ніколи не повинна скорочувати кути і не вчитися на льоту.

Існують хороші алгоритми PRNG, але вони ніколи не відповідають фізичному джерелу ентропії. Отже, щоб математика працювала як на практиці, так і в теорії, переконайтеся, що ви використовуєте найкращі можливі RNG - це в інтересах вашої компанії, як юридично, так і фінансово.


0

Дуже простим підходом може бути просто повторення всіх можливих результатів спіну та додавання комбінованих виграшів проти загальної суми зібраних коштів.

Почніть зі створення макетів коліс, дозвольте дублювати символи за бажанням. Визначте виграшні схеми та виплати, які ви хочете. Запустіть схему колеса за допомогою алгоритму визначення загальної виплати, поділити на зібрані гроші, це ваш коефіцієнт виплат.

Якщо він занадто високий, додайте більше порожніх пробілів або менші символи оплати, АБО зменшіть виплату шаблону (тобто три одиничні бари можуть становити 10 або 5 доларів). Перезапустіть алгоритм, поки не буде визначено бажаний коефіцієнт виплат.

Це дозволяє зберегти рівноцінні виплати (не 4,58 долара за виграшну схему, ви можете використовувати 5 доларів). Можливо, ви не зможете придумати точну виплату, скажімо, 95%, але при налаштуванні ви можете наблизитися.

Ось приклад алгоритму визначення коефіцієнта оплати макета колеса:

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.