Numpy学习指南之随机漫步模拟随机数生成

import random
import numpy as np
position = 0
walk = [position] #用position初始化walk列表
steps = 1000 #假设走1000步
for i in range(steps):#使用random随机生成1或-1的步数
    step = 1 if random.randint(0, 1) else -1
    position += step
    walk.append(position) #把走到的位置记录下来
###使用numpy.random生成随机数
np.random.seed(12345)

nsteps = 1000
draws = np.random.randint(0, 2, size=nsteps)
steps = np.where(draws > 0, 1, -1) #随机生成1或-1的步数
walk = steps.cumsum() #把走到的位置记录下来

print(walk.min()) #走到的最小值
print(walk.max()) #走到的最大位置
print((np.abs(walk) >= 10).argmax()) #走到-10或10位置时的步数

#一次模拟多个随机漫步
nwalks = 5000
nsteps = 1000
#模拟5000个随机漫步
draws = np.random.randint(0, 2, size=(nwalks, nsteps))
steps = np.where(draws > 0, 1, -1)
#使用正态分布以均值为0,标准差为0.25随机生成
#steps = np.random.normal(loc = 0,scale=0.25,size=(nwalks, nsteps))
walks = steps.cumsum()

print(walk.min()) #走到的最小值
print(walk.max()) #走到的最大位置
print(walks)

hits30 = (np.abs(walks) >= 10).any() #检查走到-30或30位置的walks
print(hits30.sum())
#第一次走到30或-30位置走的步数
crossing_times = (np.abs(walks[hits30]) >= 30).argmax(1)
print(crossing_times.mean()) #求均值,如果使用正态分布则略去

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值