Mô phỏng Monte Carlo với Python
Izzy Weber
Curriculum Manager, DataCamp
Xác định biến đầu vào và chọn phân phối xác suất cho chúng
Tạo đầu vào bằng cách lấy mẫu từ các phân phối này
Thực hiện phép tính tất định trên đầu vào mô phỏng
Tóm tắt kết quả
Tạo ngẫu nhiên các điểm $(x, y)$ với $x$ và $y$ trong khoảng từ -1 đến 1.

$$Area_{circle} = \pi $$
$$Area_{square} = 2 \times 2 = 4 $$
$$\frac{Area_{circle}}{Area_{square}} = \frac{\pi}{4} $$
$$\frac{n_{red}}{n_{all}} = \frac{\pi}{4} $$
$$ \pi = 4 \times \frac{n_{red}}{n_{all}}$$
Xác định biến đầu vào và chọn phân phối xác suất cho chúng
circle_points = 0
square_points = 0
Tạo đầu vào bằng cách lấy mẫu từ các phân phối này
Lấy mẫu ngẫu nhiên các tọa độ $x$ và $y$ phân phối đều trong khoảng -1 đến 1:
for i in range(n):
x = random.uniform(-1, 1)
y = random.uniform(-1, 1)
Thực hiện phép tính tất định trên các đầu vào mô phỏng
Kiểm tra mỗi điểm có nằm trong hình tròn không: tất định với $x$ và $y$
dist_from_origin = x**2 + y**2
Nếu có, cộng điểm vào circle_points; luôn cộng điểm vào square_points
if dist_from_origin <= 1:
circle_points += 1
square_points += 1
Tóm tắt kết quả để trả lời câu hỏi quan tâm
Sau nhiều vòng mô phỏng, tính giá trị pi!
pi = 4 * circle_points/ square_points
n = 4000000 circle_points = 0 square_points = 0for i in range(n): x = random.uniform(-1, 1) y = random.uniform(-1, 1) dist_from_origin = x**2 + y**2 if dist_from_origin <= 1: circle_points += 1 square_point += 1pi = 4 * circle_points / square_points print(pi)
3.142518
Mô phỏng Monte Carlo với Python