该功能的方向/指南如下: 考虑二维随机游动。步行者从原点(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”范围内,不同试验中的数值不同
我的代码中的错误在哪里?我似乎找不到哪里出了错。感谢您的任何帮助
目前没有回答
相关问题 更多 >
编程相关推荐