Skip to main content

Mô Phỏng Monte Carlo: Tung Đồng Xu Ngẫu Nhiên

· 3 min read
Software Engineering Student

Monte Carlo là phương pháp mô phỏng xác suất dựa trên việc thực hiện thử nghiệm ngẫu nhiên nhiều lần để xấp xỉ kết quả thực tế. Trong trường hợp này, ta sẽ sử dụng Monte Carlo để kiểm tra xác suất xuất hiện Sấp (S) hoặc Ngửa (N) khi tung đồng xu.

🔹 Ý tưởng mô phỏng

  1. Chạy mô phỏng nhiều lần (num_throws), mỗi lần tung đồng xu ngẫu nhiên.
  2. Ghi lại tỷ lệ xuất hiện Sấp (S) và Ngửa (N) sau khi hoàn thành tất cả lần tung.
  3. Kiểm tra xem xác suất có hội tụ về 50% theo lý thuyết không.

🔹 Code mô phỏng Monte Carlo

import random  # Import thư viện built-in

# Định nghĩa số lần gieo đồng xu
num_throws = 1_000_000_000 # 1 tỷ lần tung đồng xu

# Định nghĩa kết quả có thể có: 'S' cho Sấp, 'N' cho Ngửa
possible_outcomes = ['S', 'N']

# Sử dụng dictionary để đếm số lần xuất hiện của mỗi kết quả
outcome_counts = {'S': 0, 'N': 0}

# Thực hiện việc gieo đồng xu
for _ in range(num_throws):
outcome = random.choice(possible_outcomes) # Chọn ngẫu nhiên S hoặc N
outcome_counts[outcome] += 1 # Cập nhật số lần xuất hiện

# Kết quả thống kê
print(f"Kết quả sau {num_throws} lần tung đồng xu:")
print(f"Sấp (S): {outcome_counts['S']} lần ({(outcome_counts['S'] / num_throws) * 100:.2f}%)")
print(f"Ngửa (N): {outcome_counts['N']} lần ({(outcome_counts['N'] / num_throws) * 100:.2f}%)")

🔹 Kết quả mong đợi Sau khi chạy mô phỏng, ta có thể mong đợi:

✅ Xác suất lý thuyết của mỗi mặt đồng xu là 50%. ✅ Nếu số lần tung lớn (1 tỷ lần), kết quả sẽ hội tụ về 50% do Luật số lớn. ✅ Biến động ban đầu có thể lệch khỏi 50% nhưng sẽ ổn định khi số lần tung tăng lên.

Ví dụ kết quả thực nghiệm có thể như sau: Kết quả sau 1,000,000,000 lần tung đồng xu: Sấp (S): 499,987,000 lần (49.99%) Ngửa (N): 500,013,000 lần (50.01%)

Như vậy, mô phỏng Monte Carlo xác nhận rằng xác suất thực tế gần với giá trị lý thuyết.

🔹 Ứng dụng Monte Carlo trong thực tế 🚀 Mô phỏng Monte Carlo không chỉ dùng để tung đồng xu, mà còn áp dụng trong nhiều lĩnh vực khác như:

📈 Tài chính: Dự đoán rủi ro trong đầu tư chứng khoán. 🏗 Kỹ thuật: Đánh giá độ tin cậy của hệ thống. 🧪 Khoa học dữ liệu & AI: Kiểm định mô hình khi không có dữ liệu đầy đủ. 🎲 Đánh bạc & Trò chơi: Phân tích xác suất chiến thắng. 💡 Bạn có thể thử chạy mô phỏng với số lần tung khác nhau và kiểm tra xem xác suất có hội tụ về 50% không!