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