Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมคำนวณค่าคาดหวังของฟังก์ชันจากตัวแปรสุ่มตัวชี้วัดใน Python

สมมติว่าเรามีค่า k และ n พิจารณาการเรียงสับเปลี่ยนสุ่ม p1, p2, ..., pn ของจำนวน tự nhiên 1 ถึง n คำนวณค่า F = (X2+...+Xn-1)^k โดย Xi เป็นตัวแปรสุ่มตัวชี้วัด (Indicator Random Variable) เป็น 1 เมื่อ pi-1 < pi > pi+1 หรือ pi-1 > pi < pi+1 มิฉะนั้นเป็น 0 ต้องหาค่าคาดหวังของ F

ตัวอย่าง k = 1, n = 1000 ผลลัพธ์ = 1996/3

ขั้นตอนการแก้ปัญหา

  • กำหนดฟังก์ชัน exp_factor(n, k) คืนค่า (ตัวเศษ, ตัวส่วน) ตามสูตรสำหรับ k = 1..5
  • จากฟังก์ชันหลัก: M = n-2, p = 2/3, q = 1-p
  • (num, den) := exp_factor(n, k)
  • g := gcd(num, den)
  • คืนค่าเศษส่วน (num/g)/(den/g)

ตัวอย่างโค้ด

from math import gcd

def exp_factor(n, k):
    if k == 1:
        return (2*(n-2), 3)
    elif k == 2:
        return (40*n**2 - 144*n + 131, 90)
    elif k == 3:
        return (280*n**3 - 1344*n**2 + 2063*n - 1038, 945)
    elif k == 4:
        return (2800*n**4 - 15680*n**3 + 28844*n**2 - 19288*n + 4263, 14175)
    elif k == 5:
        return (12320*n**5 - 73920*n**4 + 130328*n**3 - 29568*n**2 - 64150*n - 5124, 93555)
    return 1.0

def solve(k, n):
    M = n-2
    p = 2.0/3
    q = 1 - p
    num, den = exp_factor(n, k)
    g = gcd(num, den)
    return str(int(num/g)) + '/' + str(int(den/g))

k = 1
n = 1000
print(solve(k, n))

อินพุต

1, 1000

เอาต์พุต

1996/3