Як азартні ігри стимулювали розвиток теорії ймовірностей.

Окрім покеру у вільний час я полюбляю читати/дивитись різний науково-популярний контент. Серед нього мене, як інженера, найбільше цікавлять точні науки: математика, фізика, хімія і т.п. Так, в цій темі теж є багато дійсно цікавих і захоплюючих речей, а не тільки "сухі цифри і теорії"😉.

І ось нещодавно я натрапив на дуже цікаву історію з часів зародження теорії ймовірностей, яка нерозривно пов'язана з історією азартних ігор. Думаю цьому сайту теж не завадить такий контент, тому вирішив написати про це у блозі. А тут ще й наблизився статус Експерт, тож точно треба писати😁.


"Парадокс" розділу ставки.

Вперше ця задача була опублікована в 1494 році у книзі "Сума знань з арифметики, геометрії, відношень і пропорційності" італійського математика Лука Пачолі. Слово парадокс не дарма взято у лапки, бо по суті ця задача не є парадоксом, але вона заводила у глухий кут найвидатніших вчених того часу, що і створило їй такий імідж.

Є декілька різних формулювань задачі, мені найбільше подобається таке (суть всюди одна):

Двоє рівних гравців грають у гру до шести перемог (переможець забирає банк 80 умовних грошей). Для простоти можна сказати що вони просто підкидають монету, тобто шанси кожної окремої гри 50/50. Вони пограли до рахунку 5:3 і вирішили зупинити гру. Як справедливо розподілити призовий фонд між ними?

А ви як думаєте? Відповідь:

Спойлер

Гравець А - 70 у.о.

Гравець Б - 10 у.о.

Правильно?😉


В сучасному світі ця задача виглядає не дуже складною. Гравцю Б для перемоги потрібно виграти 3 рази поспіль, бо лише одна перемога гравця А і він забирає банк. Ймовірність що на монеті три рази підряд випаде "орел": 

0.5 * 0.5 * 0.5 = 0.125 або 1/8.

Іншими словами математичне сподівання від гри для гравця А складає 70, а для гравця Б 10, що і є розв'язком задачі. Але такого математичного апарату ще не існувало і багато математиків давали неправильні відповіді на цю задачу.

Наприклад, невірну відповідь дав Нікколо Тарталья, хоча він був досить геніальним, щоб за одну ніч відкрити формулу коренів кубічного рівняння. Лише у 1654 році Паскаль і Ферма незалежно один від одного знайшли правильну відповідь. Це відкриття було настільки важливим, що багато хто вважає цей рік часом народження теорії ймовірностей. Тоді ще молодий голландський геній Крістіан Гюйгенс їздив до Парижу для зустрічі з Ферма і Паскалем, щоб обговорити питання теорії ймовірностей. Рішення цієї задачі він описав згодом у своєму трактаті "Про розрахунки в азартних іграх" (1657).

Ось так азартні ігри можуть приносити не тільки проблеми і борги, а ще й ставати рушіями прогресу!🤑 Головне до всього підходити з розумом і по-науковому!



Оцінити блог:
10
Україна Hybr1dTheory Експерт
Експерт
Рекреаційний гравець, інженер-енергетик, ветеран війни і просто хороший хлопець з Донеччини) Граю МТТ АВІ 5$ як хоббі. Потроху плюсую) Для зв'язку тг: t.me/Hybr1dTheory
Коментарі (19)
Україна Tarasgr Гуру
Гуру

Читав щось таке. Гарна стаття👍️

Спойлер



1 відповідь
Україна Hybr1dTheory Експерт
Експерт

Дякую!)

Україна dusia777 Легенда
Легенда

Недарма за фінальним столом є можливість укладати угоду, адже не завжди вигідно випробовувати свою вдачу на прихильність гвч 🤑

0 відповідей
Україна costarikanez Експерт
Експерт

Нічого собі, цікаво !

0 відповідей
Україна AleksGo Експерт
Експерт

Зробив схожу ситуацію, але покерну.  Припустимо що це хедзап в турнірі, де призові тільки за перше місце. 80 у.о.

Якщо в гравців співідношення стеків 1 до 7. То ICM калькулятор також запропонує поділити 70 і 10. 


Значить коли ми ділимо на фіналках, використовуються формули з 17-го сторіччя)

2 відповіді
Україна Hybr1dTheory Експерт
Експерт

Ну коли ми граємо в хедзапі, то ми граємо по ChipEV, тож ІСМ калькулятор тут ні до чого, тут вже фішки = гроші.

Україна AleksGo Експерт
Експерт

Згоден, забув про це. 

Україна AleksGo Експерт
Експерт

А як ділити, коли рахунок 4:3? 
50 на 30? 

4 відповіді
Україна Hybr1dTheory Експерт
Експерт

Треба порахувати математичне очікування від п'яти наступних ігор (мінімальна кількість ігор, які знадобляться для рахунку 6:6. Чому так розписувати треба довго, може іншим разом). Виводити формулу зараз трошки ніколи, але питання цікаве, думаю вирішу його програмно методом "Монте Карло", напишу симуляцію і прогоню пару мільйонів разів для розрахунку середнього значення очікування.

Україна Hybr1dTheory Експерт
Експерт

Коротше для рахунку 4:3 математичне сподівання вийшло 68.7%/31.3% або ж 55/25 в грошах:



Чисто з цікавості ще порахував результати для рахунку 4:2



Україна AleksGo Експерт
Експерт

А чому 5 ігор? якщо гра зупиняється на рахунку 6:5 чи 5:6. Виходить максимум 4 ігор, мінімум 2. 

Відредаговано
Україна Hybr1dTheory Експерт
Експерт

Та то для формального розрахунку треба було, але мені було лінь виводити формулу) Для симуляції не потрібно, там просто хто перший набрав 6, той і виграв. І так мільйон разів. А потім рахуємо відсоток виграшів для кожного гравця.

Україна DragonsIFUA Еліта
Еліта

Дякую за цікавий блог! 👍️

1 відповідь
Україна Hybr1dTheory Експерт
Експерт

Мені самому було цікаво, можливо буду писати щось подібне ще)

Україна Hybr1dTheory Експерт
Експерт

Для тих, хто трохи шарить в програмуванні ось код на Python, за допомогою якого можна порахувати цю задачу для різних рахунків:

import random as rnd



def simulate_game(player_A: int, player_B: int, endgame = 6) -> str:

 choices = ['Player_A', 'Player_B']

 while player_A < endgame and player_B < endgame:

  ch = rnd.choice(choices)

  if ch == 'Player_A':

   player_A += 1

  else:

   player_B += 1

 return 'Player_A' if player_A >= endgame else 'Player_B'



wins = {'Player_A': 0, 'Player_B': 0}

for _ in range(1000000):

 res = simulate_game(4, 3)

 wins[res] = wins.get(res, 0) + 1

print(f"Player A won {round(wins['Player_A']/10000, 1)}%", f"Player B won {round(wins['Player_B']/10000, 1)}%", sep='\n')


Просто задаємо потрібний рахунок передаючи в функцію simulate_game аргументи для гравця А і для гравця В. Параметром endgame можно установити кількість ігор для перемоги (за замовчуванням 6, як в оригіналі задачі). Збільшуючи кількість симуляцій в циклі (в мене тут 1000000) можна підвищити точність розрахунку, але цього достатньо щоб порахувати з абсолютною похибкою +/- 0.1.

2 відповіді
Україна AleksGo Експерт
Експерт

Перевірив код для рахунку 3:3, вийшло 50/50. 
Та для рахунку 5:3, вийшло 87,5/12,5. 

Код працює вірно) 

Україна Hybr1dTheory Експерт
Експерт

Дякую за тестування😉

Україна Vetal Легенда
Легенда

прикольно

0 відповідей
Україна mikki_19 Гуру
Гуру

Цікаво😉

0 відповідей
Незареєстровані користувачі не можуть залишати коментарі.
Будь ласка, увійдіть або зареєструйтеся.