博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python模拟随机游走
阅读量:7209 次
发布时间:2019-06-29

本文共 1212 字,大约阅读时间需要 4 分钟。

 

在python中,可以利用数组操作来模拟随机游走。

 

下面是一个单一的200步随机游走的例子,从0开始,步长为1和-1,且以相等的概率出现。纯Python方式实现,使用了内建的random 模块:

# 随机游走import matplotlib.pyplot as pltimport randomposition = 0walk = [position]steps = 200for i in range(steps):    step = 1 if random.randint(0, 1) else -1    position += step    walk.append(position)fig = plt.figure() ax = fig.add_subplot(111)ax.plot(walk)plt.show()

 

 

第二种方式:简单的把随机步长累积起来并且可以可以使用一个数组表达式来计算。因此,我用 np.random 模块去200次硬币翻转,设置它们为1和-1,并计算累计和:

# 随机游走import matplotlib.pyplot as pltimport numpy as npnsteps = 200draws = np.random.randint(0, 2, size=nsteps)steps = np.where(draws > 0, 1, -1)walk = steps.cumsum()fig = plt.figure()ax = fig.add_subplot(111)ax.plot(walk)plt.show()

 

 

一次模拟多个随机游走

# 随机游走import matplotlib.pyplot as pltimport numpy as npnwalks = 5nsteps = 200draws = np.random.randint(0, 2, size=(nwalks, nsteps)) # 0 or 1steps = np.where(draws > 0, 1, -1)walks = steps.cumsum(1)fig = plt.figure()ax = fig.add_subplot(111)for i in range(nwalks):    ax.plot(walks[i])plt.show()

 

 

 

当然,还可以大胆的试验其它的分布的步长,而不是相等大小的硬币翻转。你只需要使用一个不同的随机数生成函数,如 normal 来产生相同均值和标准偏差的正态分布:

steps = np.random.normal(loc=0, scale=0.25, size=(nwalks, nsteps))

 

本文转自罗兵博客园博客,原文链接:http://www.cnblogs.com/hhh5460/p/4356635.html
,如需转载请自行联系原作者
你可能感兴趣的文章
如何用消息系统避免分布式事务?
查看>>
Linux curl使用简单介绍 (转)
查看>>
Deep Learning(深度学习)学习笔记整理系列之(一)
查看>>
查看sqlserver被锁的表以及如何解锁
查看>>
WinCE的开发流程
查看>>
iOS网络层架构设计分享
查看>>
从 ReactiveCocoa 中能学到什么?不用此库也能学以致用
查看>>
linux上TCP connection timeout的原因查找
查看>>
DTMF的原理分析
查看>>
MODBUS-RTU通讯协议简介
查看>>
摄像机旋转约束问题及解决
查看>>
在.net中序列化读写xml方法的总结(转载)
查看>>
VC++ 使用CreateProcess创建新进程
查看>>
百度贴吧高考作文强贴
查看>>
管理 windows server 2003 的远程连接
查看>>
Apache+PHP 无法加载 MySql 模块的问题
查看>>
Leetcode: Design Hit Counter
查看>>
WPF中路由事件的传播
查看>>
ConfirmCancelUtilDialog【确认取消对话框封装类】
查看>>
FrameBuffer编程二(简单的程序上)
查看>>