用python内置的random模块实现1000步的随机漫步
import random # 引入python内置的random模块
nsteps = 1000 # nsteps 指定漫步的步数
position = 0 # postion 用于代表每一次漫步过后的位置
walks = [position] # 集合类型的walks用于存储每次漫步的数据
for x in range(nsteps):
step = 1 if random.randint(0,1) else -1
# 很pythonic的一个三元运算. random.randint(x,y)返回0到1之间的所有整数,区间为闭区间
position += step # postion 与 每次漫步的结果加法运算,得到每次漫步过后的位置
walks.append(position) # 将漫步的结果添加到walks中
一种用numpy内置random进行漫步的方法
nsteps = 1000
draws = np.randdom.randint(0,2,size=nsteps)
#np中的random.randint是左闭右开的区间,和python中的randint不一样,并且这里的结果直接是一个array的类型
steps = np.where(draws>0,1,-1)
#np.where 语句,等效于一个三元运算符where(cond,x,y) 如果cond为True,选择x,False时选择y
walks = steps.cumsum()
# np中的cumsum()为前后值相加的非聚合方法
同时模拟5000次1000步的随机漫步
xsteps = 5000
ysteps = 1000
draws = np.random.randint(0,2,size=(xsteps,ysteps)) # 创建的是5000*1000的二值矩阵
steps = np.where(draws>0,1,-1) # 对数值进行筛选
walks = np.cumsum(steps,axis=1) # cumsum的运算,指定了运算的方向,每一次的运算都行方向上的运算
网友评论