Showing posts with label логика работы. Show all posts
Showing posts with label логика работы. Show all posts

Sunday, May 31, 2015

Как работают Слот Машины

Заинтересовался данной темой и как оно бывает, материалов не столь много как хотелось бы.  Планируется 2-е части. 1-я - теория,  2-я(если дойдут руки) - практика или реализация. Основная часть информации взята из этой статьи статьи.

Случайность

Работа слот машина как и любой другой игры в казино базируется на следующих принципах:
  • Результат каждого раунда случайный(выпавшая комбинация костей, раздача карт, вращения колеса барабана)
  • Выигрыш всегда меньше фактического(об этом чуть ниже)
Другими словами, казино имеет преимущество подкрепленное математической моделью, как следствие, нет необходимости жульничать. Выпадающие символы случайны, но все устроено так, что  в долгосрочной перспективе вы проигрываете. Тем не мение, люди пытаются отыскать выигрышные шаблоны или выигрышные алгоритмы. Внутреннее чувство иногда подсказывает им, что машины работают на горячих или холодных циклах, что они отдают больше(или меньше) в разное время дня - все это не так.

Абсолютно не важно, сколько времени прошло с момента последнего джек-пота. Шансы на выигрыш каждого спина от этого не меняются. Нет никакого “потому что…” из-за чего выпала выигрышная комбинация. Не может быть алгоритма или шаблона обеспечивающего победу игрока.

Простейшая слот машина

Для начала простой пример. Рассмотрим игру подбрасывание монеты(он же coin-flip):
  • вы делаете ставку в 1$
  • подбрасываем монету
  • выпадет орел - вы выигрываете 1$. Решка - выигрывает казино
Легко заметить, что играя продолжительное время каждый останется при своих(even-sum game). Т.е. количество выпадений с орлом будет стремиться к 50%. Это значит, что казино остается без прибыли(ровно как и вы), поэтому подобные модели не используются. Теперь внесем поправку:
  • если выпадает решка, казино выигрывает как и обычно 1$
  • если орел, то вы выигрываете не 1$, а 0.9$ 
Не нужно быть великим математиком, чтоб догадаться, играя при таких правилах играя всегда останешься в убытке:
  • в среднем на каждый поставленный доллар игрок получает 95 центов в случае выигрыша
  • соответственно казино получает 5 центов в качестве прибыли
Особо внимательные могут заметить, среднее значение потерь должно быть 10, а не 5 центов, но тут следует помнить, что казино забирает эти деньги лишь в случае выигрыша, что приблизительный составляет 50% от общего числа брошенных монет.

Теперь предположим, что казино хочет обратить наш coin-flip в машину. Алгоритм был бы предельно простым: генерируем случайное значение 1 или 0 и платим победителю 90% в случае выигрыша.

Все что вам нужно было узнать из этого примера - казино должно обеспечить случайное выпадение значений. Чем дольше вы играете, тем больше проигрываете в перспективе.

Комбинации

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

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

Стоп-символы

Обычные (не прогрессивыне) видео слоты имеют от 35 до 50 стопов на колесо, когда электронные версии слотов могут иметь от 64 до 256, которые проецируются на 22-е ячейки реального(или эмулируемого) колеса.

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


Символы распределены по 22-м ячейкам. Пустые ячейки - это стопы. Можно предположить, раз существует 11 пустых ячеек, то вероятность того что они выпадут стремится к 50% и т.к. есть только один символ jackpot, то его его вероятность, стало быть, 1 к 22. На самом деле это не так. В действительности машина не оперирует 22-мя ячейками. Она оперирует 128 ячейками(или более) контролируемых программно. Один из символов может быть привязан несколько раз на конкретную стоп позицию барабана. А ГСЧ в свою очередь генерирует значение в пределах 1 до 128. Гипотетическая таблица, кот. демонстрирует как символы привязаны к реальной позиции:

Значения ГСЧ Символ Барабана Сколько раз символ встречается на барабане
1-73 Blank 73
74-78 Cherry 5
79-94 Bar 16
95-107 Double Bar 13
108-118 Triple Bar 11
119-126 Red 7 8
127-128 Jackpot 2

Допустим, ГСЧ выдал значение 53 - это пустой символ, после вращения, барабан остановится на соответствующей ячейке. 76 - символ Cherry, 128 - jackpot и т.д.

Распределение организовано так, что чаще выпадают те символы, которые не дают большого выигрыша(средневзвешенное колесо). Некоторые символы будут выпадать чаще остальных, даже если на физическом колесе(или его эмуляторе) оно присутствует в единственном экземпляре. Как можно догадаться, реальный шанс срыва jackpot-а не равняется 1 к 22, и в нашем случае - 2 к 128 или 1 к 64. Большинство символов - это пустые ячейки(73 из 128), что составляет 57%.

Говоря о пустых символах, нужно отметить, когда он выпадает, то это не просто абстрактный символ, а символ с определенным значением(или индексом). Сказанное справедливо и для остальных символов. Мы подходим к вопросу о весе каждой ячейке на барабане. Ниже упрощенная версия таблицы:

Номер стоп-а Символ Значение ГСЧ Вес символа
1 Cherry 1-2 2
2 3-7 5
3 Bar 8-12 5
4 13-17 5
5 Red 7 18-25 8
6 26-30 5
7 Bar 31-35 5
8 36-41 6
9 Cherry 42-43 2
10 44-49 6
11 2 Bar 50-56 7
12 57-62 6
13 Cherry 63 1
14 64-69 6
15 2 Bar 70-75 6
16 76-81 6
17 Bar 82-87 6
18 88-93 6
19 3 Bar 94-104 11
20 105-115 11
21 Jackpot 116-117 2
22 118-128 11

Последняя колонка - это удельный вес символа. Мы имеем 2 из 128 для превого cherry символа и 8 из 128 для семерки. Можно обратить внимание, как jackpot окружен пустыми ячейками с относительно большим удельным весом. Это должно порождать эффект “я был близок к победе”. Т.е. данный символ достаточно часто будет отображаться на экране, но крайне редко выпадать. 

Мы сейчас рассмотрели работу только одного колеса. В жизни количество колес может варьироваться от 3-х до 5-и и каждое из них может иметь свою конфигурацию.

Расчет выигрыша

Зная удельный вес каждого символа, можно построит таблицу окупаемости(payback). Какой процент денег машина возвращает игроку в случае бесконечной игры: 
Комбинация Выплата Вероятность Расчет вероятности Вероятность x Выплату
3 Jackpot 1666 0.000004 2/128 * 2/128 * 2/128 0.7%
7 7 7 300 0.000244 8/128 * 8/128 * 8/128 7.3%
3 Triple Bar 100 0.000635 11/128 * 11/128 * 11/128 6.4%
3 Double Bar 50 0.001048 13/128 * 13/128 * 13/128 5.2%
3 Single Bar 25 0.001953 16/128 * 16/128 * 16/128 4.9%
3 of any bar 12 0.030518 (16+13+11)/128 * (16+13+11)/128 * (16+13+11)/128 36.6%
3 cherries 12 0.000060 5/128 * 5/128 * 5/128 0.1%
2 cherries 6 0.004399 ((5/128)*(5/128)*(128-5)/128)x3 2.6%
1 cherry 3 0.108211 (5/128*(128-5)/128*(128-5)/128)*3 32.5%
96.3%

Формула расчета для 2 cherries: (вероятность 1-го колеса)*(вероятность 2-го колеса)*(обратную вероятность 3-го колеса), резульат умножаем на 3.  Формула расчета для 1 cherry: (вероятность 1-го колеса)*(обратную вероятность 2-го)*(обратную вероятность 3-го), результат умножается 3. Под фразой обратная вероятность имеется ввиду наступление противоположного события.

96.3% значит, что если я буду играть бесконечно долго, то на каждую ставку в 1$ получал бы обратно лишь 96.3 цента. И чем дольше я играю, тем больше мой проигрыш  стремиться к значению 3.7%.

Ресурсы