Python中随机漫步的实现
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中随机漫步的实现相关推荐
- Python模拟随机漫步
本文用Python模拟随机漫步行为. 1 使用内建的的random模块 import randomposition = 0 walk = [position] steps = 1000 for i i ...
- 【Python】随机漫步
欢迎来到博主 Apeiron 的博客,祝您旅程愉快 !时止则止,时行则行.动静不失其时,其道光明. 目录 1.缘起 2.创建 RandomWalk 类 3.随机选择方向 4.绘制随机漫步图 5.总结 ...
- 手把手讲解python在随机漫步理论的应用
随机漫步理论–python手把手讲解 随机漫步理论是由Karl Pearson 于1905年提出的,它是一种变化形式,在运动过程中每一步都是随机,没有明确的方向.这个在自然界.物理学.生物学.化学和经 ...
- Python中随机森林的实现与解释
使用像Scikit-Learn这样的库,现在很容易在Python中实现数百种机器学习算法.这很容易,我们通常不需要任何关于模型如何工作的潜在知识来使用它.虽然不需要了解所有细节,但了解机器学习模型是如 ...
- python中随机生成数字方法
在python中经常会需要随机生成一些数字,此时就需要用到python中的random模块中的randint函数了,方法如图: 此时执行程序时会随机生成闭区间1到100之间的数字,包含1和100, 但 ...
- python中随机种子_Pytorch随机种子
最近在做比赛的时候,遇到了一个最好结果,但是之后无论怎样都复现不出来最好结果了.猜测是不是跟Pytorch中的随机种子有关. 训练过程 在训练过程中,若相同的数据数据集,相同的训练集.测试集划分方式, ...
- python中随机整数生成random.randint和random.randrange的区别
在python中,通过导入random库,就能使用randint 和 randrange这两个方法来产生随机整数.那这两个方法的区别在于什么地方呢?让我们一起来看看! 区别1--例子: randint ...
- python中随机种子怎么用_Python 随机种子介绍,PyTorch 中随机种子的设置应用
随机种子是什么? 随机种子是针对 随机方法 而言的. 随机方法:常见的随机方法有 生成随机数,以及其他的像 随机排序 之类的,后者本质上也是基于生成随机数来实现的.在深度学习中,比较常用的随机方法的应 ...
- python中随机生成数字生成对了是猜对了_python入门(一) 一个猜随机数小游戏...
#猜随机数小游戏代码如下 from random import randint num = randint(0, 100) #import random 可采用引入模块的形式写随机数代码 #num = ...
- Python中随机梯度下降法
随机梯度下降法 批量梯度下降使用全部的训练样本来计算梯度,并更新模型参数,因此它的每一次迭代计算量较大,但对于凸优化问题,可以保证每次迭代都朝着全局最优解的方向前进,收敛速度较快,最终收敛到的结果也比 ...
最新文章
- postgresql创建只读账号
- python画柱状图代码-python绘制双柱形图代码实例
- 201521123029《Java程序设计》第1周学习总结
- 【struts2+hibernate+spring项目实战】统一异常处理(ssh)
- Lua的require使用
- [C语言]关于指针和int型的一道题目
- 用sniffer技术盗取电话银行密码
- webServices 应该支持Get和Post调用,在web.config应该增加以下代码
- binlog日志_mysql的binlog日志的自动定时清理
- opencv ubuntu 汉字_ubuntu下没有中文输入法的解决办法
- django 与 mysql 勾结指南
- 正则表达式常用的js验证
- w10计算机用户名密码忘了,一招简单帮你解决win10系统电脑忘记开机密码
- MySQL 计算同比环比
- PAT2021年冬(满分题解)
- PHP如何调用实现奇亚(Chia)交互[支持XCH]
- 从一坨「便便」说起,大V亲测iPhone X为什么这么贵!
- 如何在 FlowUs、Notion 等笔记软件中进行时间管理?
- 小强机器人用户手册和教程目录
- ios-关于使用高德地图api心得(1)