Hàm mô phỏng trò chơi Monty Hall

monty_hall_simulator <- function(num_simulations) {
  # Đếm xem số lượng chiến thắng của mỗi cách chơi
  stay_wins <- 0
  switch_wins <- 0
  
  # Chạy mô phỏng
  for (i in 1:num_simulations) {
    # Đặt xe hơi vào một trong 3 cửa
    car_location <- sample(1:3, 1)
    
    # Người chơi tiến hành chọn 1 trong 3 cửa
    initial_choice <- sample(1:3, 1)
    
    # Người dẫn chương trình mở 1 cửa không có xe ra
    monty_opens <- setdiff(1:3, c(initial_choice, car_location))
    
    # Người chơi chọn giữ nguyên cửa hoặc thay đổi cửa
    ## Người chơi thay đổi cửa
    final_choice <- setdiff(1:3, c(initial_choice, monty_opens))
    
    ## Kiểm tra xem nếu không đổi cửa thì có được không
    if (initial_choice == car_location) {
      stay_wins <- stay_wins + 1
    } else if (final_choice == car_location) {
      switch_wins <- switch_wins + 1
    }
  }
  
  # Trả kết quả
  return(list(stay_wins = stay_wins, switch_wins = switch_wins))
}

Chạy mô phòng trò chơi 1,000,000 lần

sim_results <- monty_hall_simulator(1000000)

Kết quả

cat("Số người chơi giữ nguyên lựa chọn thắng:", sim_results$stay_wins, "\n")
## Số người chơi giữ nguyên lựa chọn thắng: 333099
cat("Số người chơi thay đổi lựa chọn thắng:", sim_results$switch_wins, "\n")
## Số người chơi thay đổi lựa chọn thắng: 666901