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

在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
  • 否则,
    • 总数:=(4 *(n-1)+5)^ 1.5 / 6 -5 ^ 1.5 / 6-误差
    • ans:= 0.5 + total /(2 * 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)
      返回答案

n = 5
print(solve(n))

输入

5

输出

1.69647248786

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程