码迷,mamicode.com
首页 > 其他好文 > 详细

随机游走

时间:2015-03-22 01:40:13      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

 

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

 

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

# 随机游走
import matplotlib.pyplot as plt
import random

position = 0
walk = [position]
steps = 200
for 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 plt
import numpy as np

nsteps = 200
draws = 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 plt
import numpy as np

nwalks = 5
nsteps = 200
draws = np.random.randint(0, 2, size=(nwalks, nsteps)) # 0 or 1
steps = 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()

技术分享

 

随机游走

标签:

原文地址:http://www.cnblogs.com/hhh5460/p/4356635.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!