НачатьНачать бесплатно

Игра тринадцати

Знаменитый французский математик Пьер Раймон де Монмор, известный своими работами в области комбинаторики, предложил простую игру под названием «Игра тринадцати». У вас есть колода из 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(____))
Редактировать и запускать код