Quy trình Monte Carlo

Mô phỏng Monte Carlo với Python

Izzy Weber

Curriculum Manager, DataCamp

Các bước mô phỏng

  1. Xác định biến đầu vào và chọn phân phối xác suất cho chúng

  2. Tạo đầu vào bằng cách lấy mẫu từ các phân phối này

  3. Thực hiện phép tính tất định trên đầu vào mô phỏng

  4. Tóm tắt kết quả

Mô phỏng Monte Carlo với Python

Tính giá trị pi

Tạo ngẫu nhiên các điểm $(x, y)$ với $x$ và $y$ trong khoảng từ -1 đến 1.

Biểu đồ hình tròn trong hình vuông với các điểm được lấy mẫu ngẫu nhiên

$$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}}$$

Mô phỏng Monte Carlo với Python

Bước 1

Xác định biến đầu vào và chọn phân phối xác suất cho chúng

  • Đầu vào: các điểm riêng lẻ dưới dạng tọa độ $(x, y)$
  • Phân phối xác suất: $x$ và $y$ tuân theo phân phối đều từ âm một đến dương một.

 

circle_points = 0 
square_points = 0
Mô phỏng Monte Carlo với Python

Bước 2

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)
Mô phỏng Monte Carlo với Python

Bước 3

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
Mô phỏng Monte Carlo với Python

Bước 4

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
Mô phỏng Monte Carlo với Python

Tổng hợp

n = 4000000
circle_points = 0 
square_points = 0

for 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 += 1
pi = 4 * circle_points / square_points print(pi)
3.142518
Mô phỏng Monte Carlo với Python

Ayo berlatih!

Mô phỏng Monte Carlo với Python

Preparing Video For Download...