Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm giá trị kỳ vọng của phương trình đã cho cho các số ngẫu nhiên bằng Python

Giả sử chúng ta có một số n. Hãy xem xét x =rand () mod n, trong đó hàm rand () tạo ra các số nguyên từ 0 đến 10 ^ 100 (cả hai) một cách ngẫu nhiên đồng nhất. Và

$$ Y =\ sqrt {x + \ sqrt {x + \ sqrt {x + \ sqrt {x + ...}}}} $$

Chúng ta phải tìm giá trị mong đợi của Y. Giá trị của n sẽ nằm trong khoảng 1 và 5 * 10 ^ 6.

Vì vậy, nếu đầu vào là n =5, thì đầu ra sẽ là 1,696

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • err:=2235.023971557617
  • max_n:=5 * 10 ^ 6
  • pref:=một danh sách ban đầu chứa một 0
  • đối với tôi trong phạm vi từ 1 đến 5 * 10 ^ 6, hãy thực hiện
    • chèn (mục cuối cùng của pref + (1 + (4 * i + 1) ^ 0,5) * 0,5 vào cuối pref
  • nếu n
  • trả về pref [n - 1] / n
  • nếu không,
    • tổng:=(4 * (n - 1) + 5) ^ 1.5 / 6 - 5 ^ 1.5 / 6 - err
    • ans:=0,5 + tổng / (2 * n)
    • trả lại ans
  • Ví dụ

    Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

    def solve(n):
       err = 2235.023971557617
       max_n = 5 * 10**6
    
       pref = [0]
       for i in range(1, 5 * 10**6):
          pref.append(pref[-1] + (1 + (4 * i + 1)**0.5) * 0.5)
    
       if n < max_n:
          return pref[n - 1] / n
       else:
          total = (4 * (n - 1) + 5)**1.5 / 6 - 5**1.5 / 6 - err
          ans = 0.5 + total / (2 * n)
          return ans
    
    n = 5
    print(solve(n))

    Đầu vào

    5

    Đầu ra

    1.69647248786