在我的Python函数中查找错误,该函数应该返回一个列表[平均\u步数,列出\u步数],并绘制一个步骤直方图?

2024-09-30 16:34:52 发布

您现在位置:Python中文网/ 问答频道 /正文

该功能的方向/指南如下: 考虑二维随机游动。步行者从原点(0,0)开始,以单位长度和完全随机的方向每步走一步,直到距离原点D或更远。编写一个函数MontecarlorandomWalkFirstPassation,用于执行此类实验的NTRIAL,返回一个列表[平均步数,列出步数],其中平均步数表示首先到达距离原点D或以上所需的平均步数,列出步数是NTRIAL数,记录每次试验的步骤数。此外,绘制所需步骤数分布的柱状图

您需要编写一个辅助函数randomWalkFirstPassageTrial(D),该函数返回一次试验达到距离D或更远距离所需的步数。一个随机行走试验包括一个从原点(0,0)开始的步行者,在θ=random.uniform(0,2*math.pi)方向上走单位步。x和y(步长大小)的变化分别是math.cos(θ)和math.sin(θ)。在行走的任何一点,距离由math.sqrt(x2+y2)给出

您需要使用hist.py中的plotHistogram(myList、binMin、binMax、nBins、title)函数。此函数将帮助您绘制直方图。同样,请记住首先下载工作目录中的hist.py模块和cTurtle.py模块。在这个功能中,, myList表示要绘制成直方图的值列表; binMin表示直方图的最小(左)边界。对于myList中小于binMin的元素,它们将被放入第一个bin。如果binMin是布尔值,则最小边界将是myList中的最小元素。binMin默认为False。 binMax表示直方图的最大(右)边界。对于myList中大于binMax的元素,它们将被放入最后一个bin。如果binMax是一个布尔值,那么最大边界将是myList中的最大元素。binMax默认为False。 nBins表示直方图中的箱数。nBins默认为20。 标题是直方图的标题。标题默认为“”。 首先,定义一个随机数列表randomList,然后测试函数plotHistogram

这是我迄今为止创建的代码:

import hist
import math

def randomWalkFirstPassageTrial(D):
steps = 0
x = 0
y = 0
Dist = 0
while Dist < D:
    theta = random.uniform(0,2*math.pi)
    x += math.cos(theta)
    y += math.sin(theta)
    steps += 1
    Dist = math.sqrt(x**2 + y**2)
return steps

def monteCarloRandomWalkFirstPassage(D, nTrials):
    steps = 0
    L = []
    for i in range(nTrials):
        x = randomWalkFirstPassageTrial(D)
        steps += x
        L.append(x)
    average_steps = steps/nTrials
    hist.plotHistogram(L)
    return L

此作业的我的自动签名器返回一个错误:“测试失败:94!=109.829在10 delta”范围内,不同试验中的数值不同

我的代码中的错误在哪里?我似乎找不到哪里出了错。感谢您的任何帮助


Tags: 函数元素距离列表math直方图steps方向