python模拟随机游走

简介: 在python中,可以利用数组操作来模拟随机游走。   下面是一个单一的200步随机游走的例子,从0开始,步长为1和-1,且以相等的概率出现。纯Python方式实现,使用了内建的 random 模块: # 随机游走 import matplotlib.

 

在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()

 

 

 

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

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

 

目录
相关文章
|
Python
Python:利用蒙特卡洛方法模拟验证概率分布
这个题目可以使用数学方法,将其答案显式地写出来,但是验证解出来的答案是否正确,就可以使用蒙特卡洛方法了。
413 0
Python:利用蒙特卡洛方法模拟验证概率分布
|
机器学习/深度学习 测试技术 Python
蓝桥杯python第二期模拟赛 python 题解
蓝桥杯python第二期模拟赛 python 题解
蓝桥杯python第二期模拟赛 python 题解
python--模拟掷骰子游戏
通过python模拟掷骰子的游戏
python--模拟掷骰子游戏
|
算法 安全 PHP
【高级软件实习】蒙特卡洛模拟 | PRNG 伪随机数发生器 | LCG 线性同余算法 | 马特赛特旋转算法 | Python Random 模块
本篇博客将介绍经典的伪随机数生成算法,我们将 重点讲解 LCG(线性同余发生器) 算法与马特赛特旋转算法,在此基础上顺带介绍 Python 的 random 模块。 本篇博客还带有练习,无聊到喷水的练习,咳咳…… 学完前面的内容你就会了解到 Python 的 Random 模块的随机数生成的实现,是基于马特赛特旋转算法的,比如 random_uniform 函数。而本篇博客提供的练习会让你实现一个基于 LCG 算法的random_uniform,个人认为还是比较有意思的
560 0
【高级软件实习】蒙特卡洛模拟 | PRNG 伪随机数发生器 | LCG 线性同余算法 | 马特赛特旋转算法 | Python Random 模块
|
算法 测试技术 Python
第十四届蓝桥杯第一期模拟赛 python
第十四届蓝桥杯第一期模拟赛 python
第十四届蓝桥杯第一期模拟赛 python
|
Go Python
CSP 202006-2 稀疏矩阵 python 模拟
CSP 202006-2 稀疏矩阵 python 模拟
CSP 202006-2 稀疏矩阵 python 模拟
|
Python
【Python 百练成钢】灯光模拟
【Python 百练成钢】灯光模拟
121 0
【Python 百练成钢】灯光模拟
|
安全 数据安全/隐私保护 Python
Python初级案例教学【第二课】(Python 黑客对讲机,模拟个人用户登录,银行金额大写汉字转换)
Python模拟个人用户登录 业务需求: 要求:账号:admin 密码:123 1.登录时给3次机会。 2. 如果成功,显示欢迎xxx。 3. 如果登录失败,显示录入错误你还有x次机会。如果3次机会使用完毕,则显示登录超限,请明天再登录。 Python银行金额大写汉字转换 业务需求: 银行电子支票业务在金额部分需要使用大写的汉字,因此需要将用户录入的数字信息转变为汉字。 • 目前只需完成1~5位整数转换即可。
319 1
Python初级案例教学【第二课】(Python 黑客对讲机,模拟个人用户登录,银行金额大写汉字转换)
python实操案例__02—利用prettytable库模拟高铁售票系统
PrettyTable 是python中的一个第三方库,可用来生成美观的ASCII格式的表格,本实操案例用此库完成。
|
人工智能 算法 测试技术
蓝桥杯python第三期模拟赛 python题解
蓝桥杯python第三期模拟赛 python题解
下一篇
无影云桌面