เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ถ้ามีเรื่องราว ก็จำลองได้!

บางครั้ง เรื่องราวที่อธิบายการแจกแจงความน่าจะเป็นของเราอาจไม่มีการแจกแจงที่มีชื่อเฉพาะรองรับ ในกรณีเช่นนี้ ไม่ต้องกังวล! เพราะสามารถจำลองมันได้เสมอ เราจะทำแบบนั้นในแบบฝึกหัดนี้และแบบฝึกหัดถัดไป

ในแบบฝึกหัดก่อนหน้า เราได้พิจารณาเหตุการณ์หายากอย่างการขว้างโนฮิตเตอร์ใน Major League Baseball Hitting the cycle คือเมื่อนักตีทำได้ครบทั้ง 4 ประเภทในเกมเดียว ซึ่งก็เป็นอีกเหตุการณ์หายากในเบสบอลเช่นกัน เช่นเดียวกับโนฮิตเตอร์ เหตุการณ์นี้สามารถจำลองด้วยกระบวนการปัวซง ดังนั้นเวลาระหว่างการเกิด hitting the cycle จึงมีการแจกแจงแบบเอกซ์โพเนนเชียลด้วย

เราต้องรอนานแค่ไหนกว่าจะได้เห็นโนฮิตเตอร์ แล้วตามด้วย การ hitting the cycle? แนวคิดคือต้องรอสักช่วงหนึ่งสำหรับโนฮิตเตอร์ก่อน แล้วหลังจากนั้นจึงรอสำหรับ hitting the cycle อีกครั้ง กล่าวอีกนัยหนึ่ง เวลารอรวมสำหรับการมาถึงของกระบวนการปัวซงสองกระบวนการต่อเนื่องกันคือเท่าไร? เวลารอรวมคือเวลาที่รอโนฮิตเตอร์บวกกับเวลาที่รอ hitting the cycle

ตอนนี้จะได้เขียนฟังก์ชันเพื่อสุ่มตัวอย่างจากการแจกแจงที่อธิบายด้วยเรื่องราวนี้

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Statistical Thinking in Python (ตอนที่ 1)

ดูคอร์ส

คำแนะนำการฝึกหัด

  • กำหนดฟังก์ชันที่มี call signature เป็น successive_poisson(tau1, tau2, size=1) เพื่อสุ่มเวลารอสำหรับโนฮิตเตอร์และการ hitting the cycle
    • สุ่มเวลารอ (จำนวน size ตัวอย่าง) สำหรับโนฮิตเตอร์จากการแจกแจงแบบเอกซ์โพเนนเชียลที่กำหนดพารามิเตอร์ด้วย tau1 แล้วกำหนดให้กับ t1
    • สุ่มเวลารอ (จำนวน size ตัวอย่าง) สำหรับการ hitting the cycle จากการแจกแจงแบบเอกซ์โพเนนเชียลที่กำหนดพารามิเตอร์ด้วย tau2 แล้วกำหนดให้กับ t2
    • ฟังก์ชันคืนค่าผลรวมของเวลารอของทั้งสองเหตุการณ์

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

def successive_poisson(tau1, tau2, size=1):
    """Compute time for arrival of 2 successive Poisson processes."""
    # Draw samples out of first exponential distribution: t1
    t1 = ____(____, ____)

    # Draw samples out of second exponential distribution: t2
    t2 = ____(____, ____)

    return t1 + t2
แก้ไขและรันโค้ด