在Python中找到随机数给定方程的期望值的程序

假设我们有一个数字 n。考虑 x = rand()mod n,其中rand()函数随机均匀地生成 0 到 10^100(包括两者)之间的整数。和

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

我们必须找到 Y 的期望值。 n 的值将在 1 和 5*10^6 的范围内。

所以,如果输入像 n = 5,那么输出将是 1.696

示例

让我们看看以下实现以获得更好的理解 -

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

以上是 在Python中找到随机数给定方程的期望值的程序 的全部内容, 来源链接: utcz.com/z/335428.html

回到顶部