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