Python中随机漫步的实现

本文是对Wes McKinney《利用python进行数据分析》第二版第四章随机漫步代码实现,详见如下

#随机1次漫步,共1000步#法一
import matplotlib.pyplot as plt
import random
position=0      #定义初始位置
walk=[position]     #生成步进walk的列表
for i in range(1000):       #1000次循环step=1 if random.randint(0,1) else -1       #确定每次随机漫步的步数position+=step      #随机步进累积和walk.append(position)
plt.plot(walk[:100])        #画出前一百步
plt.show()

得到的输出结果如下:

#法二
import numpy as np
draws=np.random.randint(0,2,size=1000)     #生成只包含0或1的1*1000的列表
steps=np.where(draws>0,1,-1)     #将draws列表的0替换为-1
walk=steps.cumsum()     #walk是随机步进累积和的列表
plt.plot(walk[:100])
plt.show()
print(walk.min())     #寻找最小步数
print(walk.max())      #寻找最大步数
print((np.abs(walk)>=10).argmax())     #寻找何时朝某方向首次破10步

利用法二得到的输出结果如下:

若目标是实现多次随机漫步,比如5000次,每次仍步进1000步,则

#模拟5000次随机漫步,每次1000步
ndraws=np.random.randint(0,2,size=(5000,1000))     #生成newdraws列表,维度5000*1000
nsteps=np.where(ndraws>0,1,-1)
walks=nsteps.cumsum(1)     #关注列,将各行的每一列累加
print(walks)       #一个5000*1000的列表,每一行代表一次随机漫步试验,列则代表1000步数
print(walks.min())
print(walks.max())
hits30=(np.abs(walks)>=30).any(1)      #关注列,对各行每一列检查有无>=30的值,any是或运算,返回布尔值
print(hits30)       #即检查5000次试验,哪几次有超过30步的,把这几次筛出来
print(hits30.sum())     #判断总共有多少次>=30的试验
crossing_times=(np.abs(walks[hits30])>=30).argmax(1)
print(crossing_times.mean())        #计算平均穿越30步所需要用的步数

几次console的结果如下:

-33
17
17
[[ 1  0  1 ... 40 39 38][-1 -2 -1 ... 44 43 44][-1  0 -1 ...  6  5  4]...[ 1  2  3 ... 16 15 16][ 1  2  3 ...  6  5  6][ 1  2  3 ...  2  3  4]]
-117
135
[ True  True False ... False False False]
3417
507.33128475270706

几段代码是对《利用python进行数据分析》的复现,欢迎交流:)

Python中随机漫步的实现相关推荐

  1. Python模拟随机漫步

    本文用Python模拟随机漫步行为. 1 使用内建的的random模块 import randomposition = 0 walk = [position] steps = 1000 for i i ...

  2. 【Python】随机漫步

    欢迎来到博主 Apeiron 的博客,祝您旅程愉快 !时止则止,时行则行.动静不失其时,其道光明. 目录 1.缘起 2.创建 RandomWalk 类 3.随机选择方向 4.绘制随机漫步图 5.总结 ...

  3. 手把手讲解python在随机漫步理论的应用

    随机漫步理论–python手把手讲解 随机漫步理论是由Karl Pearson 于1905年提出的,它是一种变化形式,在运动过程中每一步都是随机,没有明确的方向.这个在自然界.物理学.生物学.化学和经 ...

  4. Python中随机森林的实现与解释

    使用像Scikit-Learn这样的库,现在很容易在Python中实现数百种机器学习算法.这很容易,我们通常不需要任何关于模型如何工作的潜在知识来使用它.虽然不需要了解所有细节,但了解机器学习模型是如 ...

  5. python中随机生成数字方法

    在python中经常会需要随机生成一些数字,此时就需要用到python中的random模块中的randint函数了,方法如图: 此时执行程序时会随机生成闭区间1到100之间的数字,包含1和100, 但 ...

  6. python中随机种子_Pytorch随机种子

    最近在做比赛的时候,遇到了一个最好结果,但是之后无论怎样都复现不出来最好结果了.猜测是不是跟Pytorch中的随机种子有关. 训练过程 在训练过程中,若相同的数据数据集,相同的训练集.测试集划分方式, ...

  7. python中随机整数生成random.randint和random.randrange的区别

    在python中,通过导入random库,就能使用randint 和 randrange这两个方法来产生随机整数.那这两个方法的区别在于什么地方呢?让我们一起来看看! 区别1--例子: randint ...

  8. python中随机种子怎么用_Python 随机种子介绍,PyTorch 中随机种子的设置应用

    随机种子是什么? 随机种子是针对 随机方法 而言的. 随机方法:常见的随机方法有 生成随机数,以及其他的像 随机排序 之类的,后者本质上也是基于生成随机数来实现的.在深度学习中,比较常用的随机方法的应 ...

  9. python中随机生成数字生成对了是猜对了_python入门(一) 一个猜随机数小游戏...

    #猜随机数小游戏代码如下 from random import randint num = randint(0, 100) #import random 可采用引入模块的形式写随机数代码 #num = ...

  10. Python中随机梯度下降法

    随机梯度下降法 批量梯度下降使用全部的训练样本来计算梯度,并更新模型参数,因此它的每一次迭代计算量较大,但对于凸优化问题,可以保证每次迭代都朝着全局最优解的方向前进,收敛速度较快,最终收敛到的结果也比 ...

最新文章

  1. postgresql创建只读账号
  2. python画柱状图代码-python绘制双柱形图代码实例
  3. 201521123029《Java程序设计》第1周学习总结
  4. 【struts2+hibernate+spring项目实战】统一异常处理(ssh)
  5. Lua的require使用
  6. [C语言]关于指针和int型的一道题目
  7. 用sniffer技术盗取电话银行密码
  8. webServices 应该支持Get和Post调用,在web.config应该增加以下代码
  9. binlog日志_mysql的binlog日志的自动定时清理
  10. opencv ubuntu 汉字_ubuntu下没有中文输入法的解决办法
  11. django 与 mysql 勾结指南
  12. 正则表达式常用的js验证
  13. w10计算机用户名密码忘了,一招简单帮你解决win10系统电脑忘记开机密码
  14. MySQL 计算同比环比
  15. PAT2021年冬(满分题解)
  16. PHP如何调用实现奇亚(Chia)交互[支持XCH]
  17. 从一坨「便便」说起,大V亲测iPhone X为什么这么贵!
  18. 如何在 FlowUs、Notion 等笔记软件中进行时间管理?
  19. 小强机器人用户手册和教程目录
  20. ios-关于使用高德地图api心得(1)

热门文章

  1. mysql 按照条件计数_Mysql按条件计数的几种方法
  2. 从零到一,构建你的持续交付流程(二):好的工程实践是必要的前提
  3. 苹果新款耳机问题多 线上短暂销售仍被抢空
  4. R485集线器定协议有多少种能否抗干扰?
  5. Choco安装npm
  6. 钢琴作品常用体裁名称及曲式
  7. xftp、xshell安装出现1603错误解决,亲测有用
  8. echart实现地球外环绕卫星效果
  9. 做到这十点中的三点你就是成功人士
  10. HC32F460 SPI DMA 驱动 TFT显示屏