Як азартні ігри стимулювали розвиток теорії ймовірностей.
Окрім покеру у вільний час я полюбляю читати/дивитись різний науково-популярний контент. Серед нього мене, як інженера, найбільше цікавлять точні науки: математика, фізика, хімія і т.п. Так, в цій темі теж є багато дійсно цікавих і захоплюючих речей, а не тільки "сухі цифри і теорії"😉.
І ось нещодавно я натрапив на дуже цікаву історію з часів зародження теорії ймовірностей, яка нерозривно пов'язана з історією азартних ігор. Думаю цьому сайту теж не завадить такий контент, тому вирішив написати про це у блозі. А тут ще й наблизився статус Експерт, тож точно треба писати😁.
"Парадокс" розділу ставки.
Вперше ця задача була опублікована в 1494 році у книзі "Сума знань з арифметики, геометрії, відношень і пропорційності" італійського математика Лука Пачолі. Слово парадокс не дарма взято у лапки, бо по суті ця задача не є парадоксом, але вона заводила у глухий кут найвидатніших вчених того часу, що і створило їй такий імідж.
Є декілька різних формулювань задачі, мені найбільше подобається таке (суть всюди одна):
Двоє рівних гравців грають у гру до шести перемог (переможець забирає банк 80 умовних грошей). Для простоти можна сказати що вони просто підкидають монету, тобто шанси кожної окремої гри 50/50. Вони пограли до рахунку 5:3 і вирішили зупинити гру. Як справедливо розподілити призовий фонд між ними?
А ви як думаєте? Відповідь:
Гравець А - 70 у.о.
Гравець Б - 10 у.о.
Правильно?😉В сучасному світі ця задача виглядає не дуже складною. Гравцю Б для перемоги потрібно виграти 3 рази поспіль, бо лише одна перемога гравця А і він забирає банк. Ймовірність що на монеті три рази підряд випаде "орел":
0.5 * 0.5 * 0.5 = 0.125 або 1/8.
Іншими словами математичне сподівання від гри для гравця А складає 70, а для гравця Б 10, що і є розв'язком задачі. Але такого математичного апарату ще не існувало і багато математиків давали неправильні відповіді на цю задачу.
Наприклад, невірну відповідь дав Нікколо Тарталья, хоча він був досить геніальним, щоб за одну ніч відкрити формулу коренів кубічного рівняння. Лише у 1654 році Паскаль і Ферма незалежно один від одного знайшли правильну відповідь. Це відкриття було настільки важливим, що багато хто вважає цей рік часом народження теорії ймовірностей. Тоді ще молодий голландський геній Крістіан Гюйгенс їздив до Парижу для зустрічі з Ферма і Паскалем, щоб обговорити питання теорії ймовірностей. Рішення цієї задачі він описав згодом у своєму трактаті "Про розрахунки в азартних іграх" (1657).
Ось так азартні ігри можуть приносити не тільки проблеми і борги, а ще й ставати рушіями прогресу!🤑 Головне до всього підходити з розумом і по-науковому!









Читав щось таке. Гарна стаття👍️
Дякую!)
Недарма за фінальним столом є можливість укладати угоду, адже не завжди вигідно випробовувати свою вдачу на прихильність гвч 🤑
Нічого собі, цікаво !
Зробив схожу ситуацію, але покерну. Припустимо що це хедзап в турнірі, де призові тільки за перше місце. 80 у.о.
Якщо в гравців співідношення стеків 1 до 7. То ICM калькулятор також запропонує поділити 70 і 10.
Значить коли ми ділимо на фіналках, використовуються формули з 17-го сторіччя)
Ну коли ми граємо в хедзапі, то ми граємо по ChipEV, тож ІСМ калькулятор тут ні до чого, тут вже фішки = гроші.
Згоден, забув про це.
А як ділити, коли рахунок 4:3?
50 на 30?
Треба порахувати математичне очікування від п'яти наступних ігор (мінімальна кількість ігор, які знадобляться для рахунку 6:6. Чому так розписувати треба довго, може іншим разом). Виводити формулу зараз трошки ніколи, але питання цікаве, думаю вирішу його програмно методом "Монте Карло", напишу симуляцію і прогоню пару мільйонів разів для розрахунку середнього значення очікування.
Коротше для рахунку 4:3 математичне сподівання вийшло 68.7%/31.3% або ж 55/25 в грошах:
Чисто з цікавості ще порахував результати для рахунку 4:2
А чому 5 ігор? якщо гра зупиняється на рахунку 6:5 чи 5:6. Виходить максимум 4 ігор, мінімум 2.
Та то для формального розрахунку треба було, але мені було лінь виводити формулу) Для симуляції не потрібно, там просто хто перший набрав 6, той і виграв. І так мільйон разів. А потім рахуємо відсоток виграшів для кожного гравця.
Дякую за цікавий блог! 👍️
Мені самому було цікаво, можливо буду писати щось подібне ще)
Для тих, хто трохи шарить в програмуванні ось код на 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.
Перевірив код для рахунку 3:3, вийшло 50/50.
Та для рахунку 5:3, вийшло 87,5/12,5.
Код працює вірно)
Дякую за тестування😉
прикольно
Цікаво😉