ПочатиПочніть безкоштовно

Гра «тринадцять»

Відомий французький математик П'єр Реймон де Монмарт, знаний своїми працями з комбінаторики, запропонував просту гру під назвою «Гра тринадцять». У вас є колода з 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(____))
Редагувати та запускати код