โมดูล np.random และการทดลองแบบ Bernoulli
การทดลองแบบ Bernoulli เปรียบได้กับการโยนเหรียญที่อาจมีความลำเอียง โดยในแต่ละครั้งที่โยน เหรียญมีความน่าจะเป็น \(p\) ที่จะออกหัว (สำเร็จ) และความน่าจะเป็น \(1-p\) ที่จะออกก้อย (ล้มเหลว) ในแบบฝึกหัดนี้ คุณจะเขียนฟังก์ชันสำหรับดำเนินการทดลอง Bernoulli จำนวน n ครั้ง ชื่อว่า perform_bernoulli_trials(n, p) ซึ่งจะคืนค่าจำนวนครั้งที่สำเร็จจากการทดลองทั้งหมด n ครั้ง โดยแต่ละครั้งมีความน่าจะเป็นของความสำเร็จเท่ากับ p ในการดำเนินการแต่ละครั้ง ให้ใช้ฟังก์ชัน rng.random() ซึ่งจะคืนค่าตัวเลขสุ่มระหว่างศูนย์ถึงหนึ่ง
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Statistical Thinking in Python (ตอนที่ 1)
คำแนะนำการฝึกหัด
- กำหนดฟังก์ชันที่มี signature เป็น
perform_bernoulli_trials(n, p)- กำหนดค่าเริ่มต้นของตัวแปร
n_successซึ่งใช้นับจำนวนTrue(ความสำเร็จจากการทดลอง Bernoulli) ให้เป็นศูนย์ - เขียน
forloop ที่ดำเนินการทดลอง Bernoulli ในแต่ละรอบ และเพิ่มจำนวนความสำเร็จหากผลลัพธ์เป็นTrueโดยวนซ้ำnรอบผ่านrange(n)- ในการดำเนินการทดลอง Bernoulli แต่ละครั้ง ให้สุ่มตัวเลขระหว่างศูนย์ถึงหนึ่งโดยใช้
rng.random()หากตัวเลขที่ได้มีค่าน้อยกว่าpให้เพิ่มค่าn_success(ใช้ตัวดำเนินการ+= 1) ทั้งนี้ได้มีการสร้าง RNG และกำหนด seed ไว้แล้วในตัวแปรrng
- ในการดำเนินการทดลอง Bernoulli แต่ละครั้ง ให้สุ่มตัวเลขระหว่างศูนย์ถึงหนึ่งโดยใช้
- ฟังก์ชันจะคืนค่าจำนวนความสำเร็จ
n_success
- กำหนดค่าเริ่มต้นของตัวแปร
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
def perform_bernoulli_trials(n, p):
"""Perform n Bernoulli trials with success probability p
and return number of successes."""
# Initialize number of successes: n_success
n_success = ____
# Perform trials
for i in ____:
# Choose random number between zero and one: random_number
# If less than p, it's a success so add one to n_success
if ____:
____
return n_success