【问题标题】:show function approaches certain value [closed]显示函数接近某个值[关闭]
【发布时间】:2023-12-17 06:39:01
【问题描述】:

以下是我解决这个问题的代码:

编写了三个函数来表明随着 n 的增加(例如通过加倍实验),从 n = 2 到 n = 1,000,“day_sim(n)”的值接近“sqrt(pi * n / 2)”。

“显示正在接近“sqrt(pi * n / 2)” -> 但图表看起来根本没有接近这样的 sqrt 值......

请帮我解决这个问题

import random
from random import randint 
import numpy as np

def randomgen(n):
    np.random.randint(low = 0, high = n)
    return random.randint(0,n-1)

randomgen(100)

def day(n):
    result = []
    random = randomgen(n)
    count =0
    while random not in result:
        result.append(random)
        random = randomgen(n)
        count += 1
    return count
day(100)
    

def day(n):
    result = []
    random = randomgen(n)
    count =0
    while random not in result:
        result.append(random)
        random = randomgen(n)
        count += 1
    return count

def day_sim(n):
    n_trails = 10000  
    for n in range(2,n_trails,50):
        sq_rt = math.sqrt(math.pi*n/2)
        day_sim = day(n)
        print("n =",n,"Absolute difference=",abs(sq_rt - day_sim),"SQ value",sq_rt)
        
        plt.scatter(n,day_sim, color='skyblue')
        plt.scatter(n,sq_rt, color='red')
        plt.xlim(0,10000)
        plt.ylim(0,200)


day_sim(n_trails)

enter image description here

【问题讨论】:

    标签: python simulation


    【解决方案1】:

    这样做的一种方法是随着你的进步绘制方差:

    方差 = (x - y^)**2/n

    results = []
    for n in range(2000):
      y = day_sim(n)
      x = (math.pi*n/2)**.5
      variance = (x-y)**2/n
      results.append((n, variance))
    

    然后绘制结果,您应该会看到方差接近零

    【讨论】:

    • 嗯,谢谢,但它给了我一个比较超出的最大递归深度 - 递归错误
    • 您能否详细说明一下以避免此类错误?
    • 您的递归可能来自您的 day_sim 函数——请避免将变量 day_sim 用作函数名称和列表名称——进行更新并让我知道您是否仍然有问题