Python 代码与前几行相同,但给出了一个错误?
我一直在 TypeError:“int”对象不可下标 在我的函数中。如果我注释掉函数,Equal()和gauss()可以很好地工作,我所做的只是从它们那里复制代码,并使用我的stepe()函数而不是step()或stepn()Python 代码与前几行相同,但给出了一个错误?,python,function,random-walk,Python,Function,Random Walk,我一直在 TypeError:“int”对象不可下标 在我的函数中。如果我注释掉函数,Equal()和gauss()可以很好地工作,我所做的只是从它们那里复制代码,并使用我的stepe()函数而不是step()或stepn() 将numpy导入为np 将matplotlib.pyplot作为plt导入 从numpy.random导入rand、seed、randn 步骤=1 步行=10000 步行=np.零(步数+1) 定义步骤(): 如果rand()小于0.5: 返回1.0 返回-1.0 def
将numpy导入为np
将matplotlib.pyplot作为plt导入
从numpy.random导入rand、seed、randn
步骤=1
步行=10000
步行=np.零(步数+1)
定义步骤():
如果rand()小于0.5:
返回1.0
返回-1.0
def stepn():
返回randn()+0.5
def stepe():
返回值(6*(rand()-0.5))
def Equal(步行、台阶):
l=[]
对于范围内的w(行走):
对于范围内的s(步):
走[s+1]=走[s]+步()
l、 附加(行走[步数])
返回l
def高斯(行走、步数):
l=[]
对于范围内的w(行走):
对于范围内的s(步):
步行[s+1]=步行[s]+stepn()
l、 附加(行走[步数])
返回l
def均匀(步行、步数):
l=[]
对于范围内的w(行走):
对于范围内的s(步):
步行[s+1]=步行[s]+stepn()
l、 附加(行走[步数])
返回l
plt.图(figsize=(10,7))
plt.hist(相等(步道、台阶),箱子=15)
plt.show()
plt.hist(高斯(步行、台阶),箱柜=15)
plt.show()
plt.hist(平均(步行、台阶),垃圾箱=15)
plt.show()
这里的参数
walk
(而不是walks
)屏蔽了具有相同名称的外部变量,并为后续语句walk[s+1]=walk[s]+stepn()定义。我想应该是walks
你能发布完整的堆栈跟踪吗?你是说range(len(walk))
而不是range(walk)
?您在外部for
循环中也有一个输入错误,您在该循环中编写行走
,而不是行走
。
import numpy as np
import matplotlib.pyplot as plt
from numpy.random import rand,seed,randn
steps = 1
walks = 10000
walk = np.zeros(steps + 1)
def step():
if rand() < 0.5:
return 1.0
return -1.0
def stepn():
return randn() + 0.5
def stepe():
return (6*(rand()-0.5))
def equall(walks,steps):
l = []
for w in range(walks):
for s in range(steps):
walk[s+1] = walk[s] + step()
l.append(walk[steps])
return l
def gauss(walks,steps):
l = []
for w in range(walks):
for s in range(steps):
walk[s+1] = walk[s] + stepn()
l.append(walk[steps])
return l
def evenly(walk,steps):
l = []
for w in range(walks):
for s in range(steps):
walk[s+1] = walk[s] + stepn()
l.append(walk[steps])
return l
plt.figure(figsize=(10,7))
plt.hist(equall(walks,steps),bins=15)
plt.show()
plt.hist(gauss(walks,steps),bins=15)
plt.show()
plt.hist(evenly(walks,steps),bins=15)
plt.show()
def evenly(walk,steps):