@Oligarx1488, за игровыми автоматами стоит довольно таки непростая математика.
Во-первых, если говорить о реальных автоматах, то первое, что надо было бы сделать - нормальный генератор случайных чисел. Не встроенный генератор случайных чисел, а надстройку над ним. Потому что сейчас чисто теоретически реально вычислить из результатов автомата точное время на сервере, а зная точное время, можно заранее знать, что выпадет при вращении автомата. Об этом можно почитать подробнее
тут и
тут. Ну или поискать статьи самому.
Во-вторых, говорить о плюсе\минуса игрока можно только после большого числа сыгранных игр. Под большими числами я понимаю числа больше 1 000 000 000. Всё что меньше - не поддается теории вероятности, а соответственно нельзя никак оценить. Я пошел путём вычисления обычного математического ожидания, чтобы в нулевом приближении оценить выигрыш игрока. Для этого каждый rate (вероятность выпадения) умножается на свой multiplier (множитель) и результат суммируется. Таким образом можно говорить о том, какой будет в среднем выигрыш у игрока (опять же, при большом количестве игр). По дефолту вероятности равны, значит можно тупо просуммировать множители, что даст нам ноль. Значит при большом числе сыгранных игр игрок ничего не выиграет, но и ничего не проиграет. Очевидно, что в моём вычислении есть ошибка - не учитыватся, что игрок может проиграть больше своей ставки. Отсюда следует, что игрок будет выигрывать больше, чем проигрывать.
Как посчитать то, насколько больше он выигрывает - я не знаю. Опять же можно попытаться оценить, но только примерно. По умолчанию шесть знаков, из которых один плохой. Тогда вероятность выпадения пяти хороших символов из шести будет (5/6)^5 ~ 40%. Вероятность выпадения одного плохого символа и четырех хороших вычисляем по формуле Бернулли и получаем опять же приблизительно 40%. Двух плохих и трех хороших ~ 16%. Три плохих и два хороших ~ 3%, а четыре плохих и один хороший ~ 0,3%. Вероятность получения всех пяти черепов будет меньше 0.01%. Суммируем все вероятности, получаем ~ 1, что вроде как хорошо, ибо вероятность всех событий должна быть равна единице (у на плюс минус из-за дробей). Очевидно, что при выпадении трех плохих символов игрок явно остается "в плюсе", т.к. его проигрыш уже явно превосходит ставку. Аналогично и с выпадением двух плохих знаков - его максимальный выигрыш составит 50% от ставки (т.е. 50% от ставки он проиграет). А вот с одним плохим знаком всё не так однозначно - он может либо потерять 10% от своей ставки, либо выиграть на 100% больше своей ставки. Как посчитать эту вероятность я не знаю.
В результате у нас игрок остается "в плюсе" < 60% раскладов (если я всё правильно посчитал). Как скомпенсировать эти значения - я не знаю, т.к. для этого надо заниматься статистикой, а это направление для меня далеко. Наверное, можно увеличить отрицательный множитель с -100% до -110%, тогда игрок будет "в плюсе" не больше чем в 20% случаев. Тогда он при большом числе игр будет получать небольшой выигрыш.
Под конец вам опять стоит ответить на вопрос, что такое азарт? Чем вы его определяете? При значениях по умолчанию он как раз присутствует - потенциально игрок должен выигрывать больше, чем проигрывать. Только иногда у него будет серия неудач, а иногда будет везти. Но в результате, сыграв большое число игр, он вернется к значению, с которого начинал (на самом деле больше из-за неучёта событий, описанных выше).
А на счёт запрета частого использования да, согласен, надо бы добавить. Тем более не так много кода дописывать.