Bắt đầu ngayBắt đầu miễn phí

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

Xem khóa học

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 deck không hoàn lại và gán vào draw.
  • 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 coincidences thê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(____))
Chỉnh sửa và Chạy Mã