Python程式,用於查詢給定方程在隨機數下的期望值
假設我們有一個數字 n。考慮 x = rand() mod n,其中 rand() 函式隨機生成 0 到 10^100(包括 0 和 10^100)之間的整數。並且
$$Y = \sqrt{x+\sqrt{x+\sqrt{x+\sqrt{x+...}}}}$$
我們需要找到 Y 的期望值。n 的值將在 1 和 5*10^6 之間。
所以,如果輸入是 n = 5,那麼輸出將是 1.696
為了解決這個問題,我們將遵循以下步驟 -
- err := 2235.023971557617
- max_n := 5 * 10^6
- pref := 一個最初包含單個 0 的列表
- 對於 i 從 1 到 5 * 10^6,執行以下操作
- 在 pref 的末尾插入 (pref 的最後一個元素 + (1 +(4*i + 1)^0.5) * 0.5)
- 如果 n < max_n,則
- 返回 pref[n - 1] / n
- 否則,
- total :=(4 *(n - 1) + 5)^1.5 / 6 - 5^1.5 / 6 - err
- ans := 0.5 + total /(2 * n)
- 返回 ans
示例
讓我們看看下面的實現來更好地理解 -
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))
輸入
5
輸出
1.69647248786
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP