1. Sol Casino
Бонус за регистрацию: 70 Бесплатных Спинов ( Ссылка на Бесплатный Бонус )
Бонус за первый депозит: 100% за пополнение на €/$/₽ 500 ( Ссылка на регистрацию )
2. Rox Casino
Бонус за регистрацию: 100 Бесплатных Спинов ( Ссылка на Бесплатный Бонус )
Бонус за первый депозит: 100% за пополнение на €/$/₽ 300 ( Ссылка на регистрацию )
3. Jet Casino
Бонус за регистрацию: 100 Бесплатных Спинов ( Ссылка на Бесплатный Бонус )
Бонус за первый депозит: 150% за пополнение на €/$/₽ 200 ( Ссылка на регистрацию )
4. Fresh Casino
Бонус за регистрацию: 20 Бесплатных Спинов ( Ссылка на Бесплатный Бонус )
Бонус за первый депозит: 100% за пополнение на €/$/₽ 500 ( Ссылка на регистрацию )
5. Izzi Casino
Бонус за регистрацию: 40 Бесплатных Спинов ( Ссылка на Бесплатный Бонус )
Бонус за первый депозит: 200% за пополнение на €/$/₽ 1000 ( Ссылка на регистрацию )
6. Legzo Casino
Бонус за регистрацию: 100 Бесплатных Спинов ( Ссылка на Бесплатный Бонус )
Бонус за первый депозит: 150% за пополнение на €/$/₽ 500 ( Ссылка на регистрацию )
🎲🐍 Модель гра в кістках на Python за допомогою методу Монте -Карло
У цій статті ми вчимося використовувати метод Монте -Карло для прогнозування ймовірностей.
Що таке моделювання Монте -Карло від Монте -Карло?
Моделювання Монте -Карло – це тип обчислювального алгоритму, який оцінює ймовірність безстрокової події через участь випадкових значень. Алгоритм заснований на повторному випадковому зразку в спробі визначити ймовірність. Це означає, що моделюють події з випадковими вхідними даними великої кількості разів для отримання оцінки. Також визначаються інші фактори, які будуть видно за прикладом. Моделювання Монте -Карло використовується в галузі економіки, азартних ігор, інженерії та енергетики. Тому знання цього методу буде корисним для багатьох областей. Модель Монте -Карло легко зрозуміти на прикладі гри в кістці.
Гра в кості
У цій грі будуть залучені 2 шестикутні кубики. Щоб перемогти, гравцеві потрібно викинути однакову кількість на обох кубиках. Шестикутній куб має 6 можливих результатів (1, 2, 3, 4, 5 і 6). З двома кубами 36 можливих результатів (1 і 1, 1 і 2, 1 і 3 і t. D., або 6 х 6 = 36 варіантів). У цій грі у закладі є більше шансів на перемогу (30 результатів проти 6 гравців), отже, установа має значну перевагу.
Припустимо, гравець починає з балансу в 1000 доларів і готовий втратити все, тому він ставить 1 долар на кожен кидок (обидва кубики) і вирішує зробити 1000 пострілів. Припустимо, що установа є щедрою, а платіж буде в 4 рази більше, ніж ставка, коли гравець виграє. Наприклад, якщо гравець виграє перший кидок, баланс збільшиться на 4 долари, а раунд закінчиться зі 1004 доларів. Якщо вам дивом вдасться виграти серію з 1000 пострілів, то загальна сума виявиться 5000 доларів. У випадку кожного невдалих раундів ви отримаєте 0 $.
Імпорт бібліотек Python
Ми імітуємо гру, щоб дізнатися, чи гравець зробив правильний вибір. Почнемо код з імпорту необхідних бібліотек Python: Pyplot від Matplotlib та випадкові. Для візуалізації результатів бібліотека піплот буде використана для моделювання шестикутного кидка кісток – випадкове.
# Імпорт імпорту бібліотеки Matplotlib.Піплот як plt імпортувати випадковий
Функція кидання кубиків
Далі ми визначаємо функцію, яка видасть випадкове ціле чисельність від 1 до 6 для обох кісток (наслідування кидка). Функція порівнюватиме значення обох кісток і поверне логічне значення – однакові кидки чи ні. Пізніше це значення буде використане для визначення дій у коді.
# Створіть функцію кидання куба def roll_dice (): die_1 = випадковий.Randint (1, 6) die_2 = випадковий.Рандінт (1, 6)
# Визначте значення на кістках однакових
Вхідні дані та відстежені змінні
Кожне моделювання Монте -Карло за допомогою вхідних даних та інформації, необхідної для отримання. Вхідні дані визначаються, коли гра була описана. Кількість пострілів за гру – 1000 разів, сума за кидок 1 долар. Крім того, потрібно визначити, скільки разів гра буде модель. Як лічильник Монте -Карло, ми використовуємо змінну num_simulations. Чим більше це число, тим точніше передбачувана ймовірність відповідає справжньому значення.
Кількість змінних, які можна контролювати, зростає зі збільшенням складності проекту, тому вам потрібно визначити, яка інформація потрібна. У цьому прикладі буде контролюватися ймовірність виграшу (виграш за гру, поділену на загальну кількість пострілів) та остаточний баланс для кожного моделювання (гра). Ці змінні будуть ініціалізовані, оскільки списки будуть оновлені в кінці кожної гри.
# Вхідні дані num_simulations = 10000 max_num_rolls = 1000 BET = 1
# Відстежені змінні win_probability = [] end_balance = []
Налаштування фігури
Наступним кроком є налаштування фігури перед початком моделювання: це додасть лінії до малюнка після кожної гри. Після запуску всіх моделювання ми відображаємо графік, щоб показати результати.
# Створення фігури для імітації балансу Фіг = PLT.Фігура () PLT.Назва (“Гра в кубиках Монте -Карло [” + str (num_simulations) + “моделювання]”) plt.xlabel (“номер рулону”) plt.ylabel (“баланс [$]”) plt.xlim ([0, max_num_rolls])
Моделювання Монте -Карло
У коді нижче 2 циклів: зовнішній, який сформує задану кількість моделювання (10 000) та інвестували, що запускає кожну гру (1000 пострілів). Перед початком кожного циклу, поки ініціалізується:
- Залишок гравця становить 1000 доларів (у формі списку для будівельних графіків);
- Кількість пострілів та виграшів.
Поки цикл моделюватиме гру на 1000 пострілів. Кістки кидають всередину цього циклу, використовуючи логічну змінну, повернуту функцією roll_dice () для визначення результату. Якщо кістки однакові 4-кратні ставки додаються до списку балансів та виграшу облікового запису гравця. Якщо кістки різні, ставка виражена зі списку балансів. В кінці кожного кидка додайте лічильник до списку NUM_ROLLS.
Як тільки кількість пострілів досягла 1000, ми обчислюємо ймовірність виграти гравця, оскільки кількість виграшів розділена на загальну кількість пострілів. Ми зберігаємо остаточний баланс завершеної гри у треках змінної end_balance.
# Для циклу запускає потрібну кількість моделювання для i в діапазоні (num_simulations): баланс = [1000] num_rolls = [0] num_wins = 0 # виконується, поки гравець не кинеться в 1000 разів, а num_rolls [-1] < max_num_rolls: те саме = roll_dice () # результат, якщо кістки однакові, якщо ж: баланс.Додайте (баланс [-1] + 4 * ставка) num_wins + = 1 # Результат, якщо кістки інакше: баланс.Додати (баланс [-1] – ставка)
Num_rolls.Додати (num_rolls [-1] + 1) # Збережіть змінну моніторингу та додайте рядок до малювання Win_Probabolyity.Додати (num_wins/num_rolls [-1]) end_balance.Додати (баланс [-1]) plt.Сюжет (num_rolls, баланс)
Отримання результатів
Останній крок – зняти значущі дані з відстежуваних змінних. Ми відображаємо малюнок (показаний нижче), створений у циклі для для циклу. Ми також обчислюємо та відображаємо загальну ймовірність перемоги та остаточного балансу, в середньому списки Win_probabolyity та end_balance.
# Ми відобразимо графік після завершення моделювання PLT.Show ()
# Усредненная вероятность выигрыша и конечного баланса overall_win_probability = sum(win_probability)/len(win_probability) overall_end_balance = sum(end_balance)/len(end_balance) # Вывод средних значений print(“Average win probability after ” + str(num_simulations) + ” runs: ” + str (загальний_win_probabolyity) print (” Середній баланс закінчення після ” + str (num_simolations) +” працює: $ ” + str (aleg_end_balance)))
Моделювання гри в кістці:
Середня ймовірність виграшу після 10000Runs: 0.16666613999999954 КОНСУЛЬНИЙ БАЛАНС АВЕГАГА ПІСЛЯ 10000RUNS: $ 833.307
Аналіз результатів
Давайте зробимо висновок з результатів. З наведеної вище малюнки можна визначити, що гравець рідко отримує прибуток після 1000 пострілів. Середній кінцевий баланс у 10 000 моделювання становить 833,66 дол. США (через рандомізацію можливі відмінності в результатах). Казино залишається у перемозі, навіть якщо воно платить у чотири рази більше з перемогою гравця.
Ми також зазначимо, що ймовірність виграшу становить 0.1667 або 1/6. Вигорі було зазначено, що гравець має 6 виграшних результатів з 36 можливих. Використовуючи ці 2 числа, очікується, що гравець виграє 6 з 36 пострілів, або 1/6 пострілів, що відповідає прогнозу Монте-Карло.
***
Матеріали на цю тему
- 🎲 Чому в науці про дані нам потрібна теорія ймовірності та статистика
- Тест теорії ймовірності, який змусить вас зламати голову
Джерела
- https: // середній.Com/@zackfizell10/як to-create-a-monte-carlo-simulation-python-c24634a0978a