การคำนวณแบบ Deterministic ที่ผิดพลาด
ในแบบฝึกหัดนี้และแบบถัดไป เราจะทดลองปรับเปลี่ยนการคำนวณค่า pi จากวิดีโอ เพื่อทำความเข้าใจความสำคัญของแต่ละขั้นตอนในกระบวนการ Simulation ให้ลึกยิ่งขึ้น
จำได้ไหมว่า Simulation สำหรับหาค่า pi นั้นจะสุ่มจุด \((x, y)\) โดยที่ \(x\) และ \(y\) มีค่าระหว่าง -1 ถึง 1 ดังที่แสดงในกราฟด้านล่าง

ลองคิดดูว่าถ้าเราเปลี่ยนการคำนวณแบบ Deterministic ที่ใช้ตรวจสอบว่าควรนับจุดเข้า circle_points หรือไม่ ผลลัพธ์จะเปลี่ยนแปลงอย่างไร? ค่า pi ที่ได้จะผิดเพี้ยนอย่างเห็นได้ชัด ซึ่งแสดงให้เห็นว่าการกำหนดการคำนวณแบบ Deterministic ให้ถูกต้องนั้นสำคัญมากสำหรับ Monte Carlo Simulations!
ได้ import random ไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Monte Carlo Simulations ใน Python
คำแนะนำการฝึกหัด
- เพิ่มค่า
circle_pointsสำหรับทุกจุดที่มีระยะห่างจากจุดกำเนิดน้อยกว่า 0.75 (แทนที่จะใช้ระยะห่าง 1 อย่างที่แสดงในวิดีโอ)
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
n = 10000
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
# Increment circle_points for any point with a distance from origin of less than .75
if ____:
circle_points += 1
square_points += 1
pi = 4 * circle_points / square_points
print(pi)