การเลือกการแจกแจงความน่าจะเป็นที่ไม่ถูกต้อง
ในแบบฝึกหัดนี้ เราจะทำงานต่อจากตัวอย่างการประมาณค่า pi:

จะเกิดอะไรขึ้นถ้าเปลี่ยนการแจกแจงความน่าจะเป็นจากการแจกแจงสม่ำเสมอแบบต่อเนื่อง (random.uniform()) ไปเป็นการแจกแจงสม่ำเสมอแบบไม่ต่อเนื่อง (random.randint())? ผลลัพธ์จะไม่น่าเชื่อถือ เนื่องจาก random.randint() สุ่มค่าจำนวนเต็ม ในขณะที่ random.uniform() สุ่มค่าทศนิยมแบบต่อเนื่อง
สังเกตค่า pi ที่ได้จากการจำลองนี้ เพราะการเลือกการแจกแจงความน่าจะเป็นที่ไม่ถูกต้องจะทำให้ผลลัพธ์ไม่แม่นยำ การเลือกการแจกแจงที่เหมาะสมถือเป็นสิ่งสำคัญในการทำ Monte Carlo simulations และเราจะเจาะลึกรายละเอียดเกี่ยวกับการแจกแจงประเภทต่าง ๆ ในบทเรียนถัดไป
ได้ import random ไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Monte Carlo Simulations ใน Python
คำแนะนำการฝึกหัด
- สุ่มค่าพิกัด
xและyในช่วง -1 ถึง 1 โดยใช้random.randint()แทนฟังก์ชันrandom.uniform()ที่ถูกต้องซึ่งใช้ในวิดีโอ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
n = 10000
circle_points = 0
square_points = 0
for i in range(n):
# Sample the x and y coordinates from -1 to 1 using random.randint()
x = ____
y = ____
dist_from_origin = x**2 + y**2
if dist_from_origin <= 1:
circle_points += 1
square_points += 1
pi = 4 * circle_points / square_points
print(pi)