Гра «тринадцять»
Відомий французький математик П'єр Реймон де Монмарт, знаний своїми працями з комбінаторики, запропонував просту гру під назвою «Гра тринадцять». У вас є колода з 13 карт, кожна з номером від 1 до 13. Перетасуйте колоду й тягніть карти одну за одною. Збіг — це коли номер на карті збігається з порядком, у якому її витягнуто. Наприклад, якщо п'ята карта, яку ви тягнете, — це 5, маємо збіг. Ви виграєте, якщо пройдете всі карти без жодного збігу. Давайте обчислимо ймовірність виграшу в цій грі за допомогою імітації.
Виконавши цю вправу, ви ще краще навчитеся перетворювати абстрактні задачі на модель імітації для оцінювання ймовірностей.
Ця вправа є частиною курсу
Статистичне моделювання в Python
Інструкції до вправи
- Для кожного розіграшу витягніть усі карти з
deckбез повернення й запишіть уdraw. - Перевірте, чи є в розіграші збіги, і якщо так, збільшіть лічильник
coincidencesна 1. - Обчисліть імовірність виграшу як частку ігор без жодного збігу й використайте
prob_of_winning, щоб вивести результат.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# Pre-set constant variables
deck, sims, coincidences = np.arange(1, 14), 10000, 0
for _ in range(sims):
# Draw all the cards without replacement to simulate one game
draw = np.random.choice(____, size=____, replace=____)
# Check if there are any coincidences
coincidence = (draw == list(np.arange(1, 14))).any()
if coincidence == ____:
coincidences += 1
# Calculate probability of winning
prob_of_winning = ____
print("Probability of winning = {}".format(____))