Как обеспечить соответствующий коэффициент выплат для игрового автомата?

11

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

Чего я не могу понять, так это как правильно обеспечить, чтобы машина получала рейтинг выплат (скажем, 95%).

Итак, у меня есть катушка создать остроумие 22 пространства на нем. Заполнено 16 различными символами.

Когда я получаю свое случайное число, делю его на 64 и получаю остаток, я переключаюсь на таблицу циклов, чтобы увидеть, как виртуальный останов относится к положению барабана.

Теперь, когда у меня есть способ остановки барабанов, я должен убедиться, что соотношение выплат правильное? Как на каждый доллар, который они вложили, как убедиться, что машина будет платить 0,95 цента?

Спасибо за идеи.

Я работаю в ActionScript, если это помогает с проблемами языка, но в целом я просто ищу теорию.

Изменить: Существует реальные деньги участвуют только в том , что они могут купить больше фишек , чтобы играть больше. Человеку не будут выплачены реальные деньги, если он действительно ударит по любой из линий выплат.

Kris.Mitchell
источник
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 спинов, или даже всего один спин. В течение достаточно длительного времени машина в среднем будет платить правильную сумму.

Чтобы заставить это работать на нескольких барабанах, вам нужно умножить вероятность выигрыша каждого барабана. Рассмотрим пример 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 x 0,95 x $ 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 .. и т. Д.

lukevanin
источник
Удивительно. Вы просто спасли меня много работы. Я прочитал много документов о том, как должны работать слоты, но этот ответ действительно продал его мне с точки зрения непрофессионала. Спасибо!
Стивен
7

Вы хотите, чтобы ожидаемое значение было 0,95. Проще говоря, это сумма probability * payoutдля каждого государства.

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

Например, если у вас 1 Bell sybols на катушку, то вероятность

[Bell] [Bell] [Bell]

будет 1/22 ^ 3. И если у вас 2 Вишни на катушку, то вероятность

[Cherry] [Cherry] [any]

будет 1/11 ^ 2.


РЕДАКТИРОВАТЬ: выше только говорит вам, как проверить, что выплаты дают желаемую ставку возврата. В качестве простого примера рассмотрим игру, в которой вы платите 1 доллар, чтобы перевернуть 2 монеты. Вот три схемы выплат, которые все дают доходность 0,95:

  1. Две головы платит $ 3,80, все остальное ничего не платит
  2. Две головы или два хвоста платят $ 1,90, все остальное ничего не платит
  3. Две головы ничего не платят, все остальное платит $ 1,26

Какой из них более «весело»? Кому ты рассказываешь...

celion
источник
При этом ни один игровой автомат, созданный за последние несколько десятилетий, не раскручивает такие барабаны. Если три колокола выплачивают джекпоты, они будут расти непропорционально меньше, независимо от того, сколько на физическом барабане.
3
Я просто занимаюсь математикой - делать это весело - чужая работа :)
celion
@ Joe - Я согласен, колокола будут на барабане на тонну меньше, чем остальные символы. @celion Я еще не до конца понял. Допустим, у меня есть барабаны (у меня 5), и пользователь нажимает кнопку, чтобы играть в игру. Я беру следующие 5 случайных чисел, делаю кальки, чтобы найти остановки и заставляю символы показываться. Как ставка выплаты влияет на случайные числа и остановки? Я устанавливаю выплату по символам, которые находятся на барабане, и по сумме символов с высокой -> низкой выплатой, содержащихся на барабане?
Крис. Митчелл,
@ Крис-Митчелл - Может быть, я неправильно понимаю, как работают игровые автоматы. Я предположил, что для каждого возможного результата выплата фиксирована. Если символы на барабане меняются каждый раунд, математика становится немного сложнее, но вы все равно должны иметь возможность определить (в автономном режиме, с карандашом и бумагой) вероятность данного состояния. Это просто дает вам возможность убедиться, что набор выплат даст желаемую (среднюю) норму возврата; Существует бесконечное количество способов назначить выплаты с учетом этого ограничения, поэтому вы должны выбрать «забавный».
Целион
@celion - Я не хотел скучать по тебе, и если кто-то еще читает это, поправь меня, если я ошибаюсь, но выплата фиксирована. Я не верю, что барабаны меняются каждый раунд. Я думаю, что барабаны для видео-слотов намного больше, чем настоящие механические игровые автоматы. Кстати, я полагаю, что мне больше всего понравится вариант 2 или 3. Два достаточно рискованно, чтобы быть проблемой, где вы можете зарабатывать деньги, все еще зная, что проиграете. Три с другой стороны, кажется, лучше, потому что у вас больше шансов на победу.
Крис. Митчелл
1

Более простой и надежный способ сделать это - не имитировать барабаны, а использовать внутренний кубик, который выбирает выигрыш игрока, а затем просто процедурно заполнить барабан (или сохранить где-то большой набор, но это, вероятно, займет больше времени). делать).

Кап. красный
источник
0

Остальные не коснулись этого:

... как правильно убедиться, что у машины будет рейтинг выплат ..

Если вы используете абсолютно случайные числа, нет никакой уверенности. Однако вы можете вести статистику выплат и корректировать вероятность выплаты во время выполнения, используя цикл обратной связи .

Если в течение некоторого времени выплаты не было, увеличьте вероятность выигрыша, и наоборот.

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

Яри ​​Комппа
источник
1
Ваше решение не нужно. Идеальный генератор случайных чисел (RNG) со временем приблизится к точному рейтингу выплат. Хотя это правда, что использование встроенной функции RNG по умолчанию не совсем приемлемо (в основном из-за предсказуемости), правильное решение состоит в том, чтобы использовать более качественный RNG, например: en.wikipedia.org/wiki/Random_number_generation#Physical_methods . Кроме того, включая неслучайную игровую логику или «настраивает» рейтинг выплат, который, как вы предлагаете, в большинстве мест запрещен. Это хорошо для хитрого веб-сайта, но совершенно не для начинающих приложений реального мира.
Люк Ван в
1
@lukevanin, это требуется по закону в других местах, так что это действительно случай понимания контекста.
Питер Тейлор
0

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

Конечно, трудно отличить «истинные» от «псевдо» ГСЧ на стороне клиента, особенно при небольшом размере выборки, но есть разница - в приложении, где задействованы деньги и юридическая ответственность, я бы не стал рисковать. Если вам нужен RNG, единственное, что хуже, чем отсутствие RNG, это иметь сломанный RNG, не зная об этом, так что это одна из областей, где ваша компания никогда не должна срезать углы или учиться на лету.

Есть хорошие алгоритмы PRNG, но они никогда не будут соответствовать физическому источнику энтропии. Поэтому, чтобы математика работала как на практике, так и в теории, убедитесь, что вы используете наилучшую возможную ГСЧ - это отвечает интересам вашей компании как в юридическом, так и в финансовом отношении.

Hackworth
источник
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
Doug.McFarlane
источник