Trò chơi mười ba
Một nhà toán học Pháp nổi tiếng, Pierre Raymond De Montmart, người được biết đến với các nghiên cứu về tổ hợp, đã đề xuất một trò chơi đơn giản gọi là Trò chơi Mười Ba. Bạn có một bộ 13 lá bài, mỗi lá được đánh số từ 1 đến 13. Xáo trộn bộ bài này và rút từng lá một. Một “trùng hợp” xảy ra khi con số trên lá bài trùng với thứ tự rút lá đó. Ví dụ, nếu lá thứ 5 bạn rút ra là số 5, đó là một trùng hợp. Bạn thắng nếu đi hết cả bộ bài mà không có bất kỳ trùng hợp nào. Hãy tính xác suất thắng trò chơi này bằng mô phỏng.
Hoàn thành bài tập này sẽ giúp bạn củng cố hơn nữa khả năng chuyển các bài toán trừu tượng sang khuôn khổ mô phỏng để ước lượng xác suất.
Bài tập này là một phần của khóa học
Mô phỏng Thống kê bằng Python
Hướng dẫn bài tập
- Với mỗi lượt rút, hãy rút tất cả các lá trong
deckkhông hoàn lại và gán vàodraw. - Kiểm tra xem có trùng hợp nào trong lượt rút hay không và, nếu có, tăng bộ đếm
coincidencesthêm 1. - Tính xác suất thắng là tỉ lệ số ván không có trùng hợp nào và dùng
prob_of_winningđể in kết quả của bạn.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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(____))