Моделируем игру в рулетку на Python - Журнал «Код» программирование без снобизма

Моделируем игру в рулетку на Python - Журнал «Код» программирование без снобизма


=============


Регистрируйся и получи бонус до 50000 рублей!

✅ Ссылка: 1WIN.COM

🔥 Промокод для СУПЕРБОНУСА: TELEGRAPHBONUS

🎰 РЕГИСТРАЦИЯ 🎰

💰 Раздача ваучеров до 1000 рублей: t.me/onewin_vauchers.


=============


Моделируем игру в рулетку на Python


Недавно у нас была статья о математическом ожидании в рулетке. Сегодня мы смоделируем игру на рулетке и покажем силу математики на практике.


Создание казино онлайн


Недавно у нас была статья о математическом ожидании в рулетке. Сегодня мы смоделируем игру на рулетке и покажем силу математики на практике.


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



  • У рулетки 37 секторов: 18 красных, 18 чёрных и зеро. Самая простая ставка — на красное или на чёрное. Если ставка сработала, то она удваивается. Если не сработала, то ставка сгорает.

  • По идее, в половине случаев ставка должна принести прибыль, поэтому играть в эту игру должно быть выгодно. Поставил большую сумму, удвоил, забрал. На первый взгляд, шанс — 50%.

  • Но на самом деле красное или чёрное выпадают не в половине случаев, а чуть реже — за счёт зеро. Из-за него вероятность красного или чёрного не 50%, а 48,6%.

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


Но так ли это на самом деле? Может быть, здесь есть какой-то математический трюк, из-за которого мы видим искажённые результаты? Давайте построим модель и протестируем всё.


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


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


Мы сделаем три модели рулетки:



  1. Классика. В первом случае мы смоделируем классическую рулетку как в казино с отрицательным матожиданием. Для этого нам понадобится 18 чёрных цифр, 18 красных и зеро, а ставить будем только, например, на чёрное. Теоретически, играя по этой стратегии, мы должны со временем проиграть.

  2. Во второй стратегии мы сделаем нулевое матожидание — уберём зеро. Это даст нам равные шансы при каждой ставке, поэтому, скорее всего, при том же количестве ставок, что и в первый раз, мы останемся с плюс-минус той же суммой. Не ровно той же, а примерно такой же.

  3. Третья стратегия — делаем положительное матожидание. Для этого мы убираем зеро и одну красную цифру, чтобы у нас было 18 чёрных и 17 красных. Это значит, что мы вероятнее выиграем, чем проиграем, поэтому при том же количестве ставок мы должны неплохо заработать.


Но это в теории. Как получится на практике — сейчас проверим.


⚠️ Это про Python


Мы делаем проект на Python, для его запуска нужна пайтоновская среда и программы. Мы об этом уже писали, прочитайте: Как установить Python и начать на нём писать.


Чтобы построить графики, нам понадобятся две библиотеки — Plotly и Pandas.


Plotly отвечает за графическую часть — рисует красивые графики в браузере с помощью JavaScript. Их можно увеличивать, выделять фрагмент для анализа, скачивать себе как картинки и сравнивать данные между собой. Когда нужно нарисовать какой-то график, Plotly запускает браузер и создаёт локальную страницу с интерактивными данными.


Чтобы вся эта магия с данными работала и графики обрабатывались правильно, для Plotly нужна библиотека Pandas. Она отвечает за математику, анализ и обработку всех чисел на графике.


Устанавливаются библиотеки так:


pip install plotly
pip install pandas


Эти команды можно запустить прямо в терминале VS Code, если вы пишете код в нём, а если нет — то в командной строке компьютера.


Всё, что понадобится для проверки каждой стратегии, мы вынесем в отдельные переменные. Это позволит нам легко поменять нужные числа при необходимости в одном месте, а не искать по всей программе.


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


Напишем это на Python:


В каждой стратегии будем ставить на цвет — красное или чёрное. Чтобы понять, сыграла ставка или нет, мы каждый раз будем брать случайное число от 1 до 37: 18 чёрных, 18 красных и зеро. Чтобы было проще, пусть числа от 1 до 18 у нас будут чёрные, с 19 по 36 — красные, а 37 будет зеро.


Первая стратегия: берём всё как есть и просто бросаем шарик. Если выпало чёрное — мы выиграли. В этой стратегии у нас 18 выигрышных вариантов и 19 проигрышных, поэтому матожидание будет отрицательным.


Вторая стратегия: убираем зеро. У нас получается по 18 чёрных и красных чисел, и вероятность выиграть — ровно 50 на 50. Это даёт нам нулевое матожидание.


Третья: убираем зеро и одно красное число, чтобы было 18 чёрных и 17 красных. Так как вероятность попасть на чёрное выше, чем на красное, то матожидание будет положительным.


👉 Когда будете читать код, обратите внимание на такую строку: if ball in range(1,19) . Дело в том, что Python работает с диапазоном range() так: первое число входит в рабочий диапазон, а конечное — нет. Поэтому, чтобы нам проверить, попало ли наше число в диапазон от 1 до 18 включительно, нам нужно указать range(1,19).


Если мы запустим этот код, то в консоли увидим результат для каждого матожидания:



Кажется, что все три варианта дают примерно одинаковый результат, но на самом деле в первом случае вы останетесь без денег, а в третьем — разбогатеете. Чтобы было нагляднее — построим графики.


Для графиков мы используем библиотеку Plotly и рисуем сразу все три графика на одном поле — это даст нам наглядность и понимание, к чему приводит разное матожидание. Чтобы было понятно, какой график отвечает за какую стратегию, мы их подпишем:


Теперь посмотрим на тот же результат, который у нас получился, но в виде графиков:



Синяя линия — это баланс нашей первой игры с отрицательным матожиданием. Мы предсказуемо всё проиграли.


Оранжевая линия — график баланса при нулевом матожидании. Видно, что мы то выигрывали, то проигрывали, но в результате мы всё равно остались примерно с той же суммой, что и начинали.


Зелёная линия — наш баланс при положительном матожидании. Мы выигрывали чаще, чем проигрывали, поэтому удвоили нашу стартовую сумму.


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


Похожие статьи


Список лучших онлайн казино c игpaми от ELK Studios на 2021 год: как выбрать заведение для игры на деньгикритерии попадания в топ

Крипто казино Stake в котором играет Мелстрой - бонусы, турниры, вывод

Открыть Онлайн-Казино: Сайт под ключ | Раскрутка | Casino Market

казино лучшие онлайн

Джокер казино: игровые автоматы на деньги ⇒ Joker casino Украина

Грові Автомати Грати на Гроші ▷ Або Онлайн Безкоштовно (21 )

Бесплатные онлайн игровые автоматы Украины без регистрации и СМС

Игровые автоматы на деньги онлайн в Украине 2022

Казино онлайн в Украине - ТОП онлайн казино на реальные деньги

Elslots ᐈ официальный сайт Эльслотс казино для игры на деньги

Report Page