什么是随机游走?

随机游走(random walk)也称随机漫步,随机行走等,是以随机的方式采取连续步骤的过程。然后,可以将其他条件应用于此描述,以为您的特定用例创建一个随机遍历。粒子的布朗运动,股票代码运动,基质中的活细胞运动只是在现实世界中看到的一些更为人所知的随机游走。

在这里,我们模拟从原点开始的1-D,2-D和3-D的简化随机游走以及从[-1,0,1]中选择的具有相等概率的离散步长。起点表示+,停止点表示o。

对于不同的应用程序,这些条件会根据需要发生变化,例如从选定的股票价格开始游走,用显微镜检测到的初始细胞位置等,steps的选择通常是概率性的,并且取决于来自past data, projection assumptions, hypothesis being tested等的附加信息。

设置您的jupyter notebook:

%pylab inlinefrom itertools import cyclefrom mpl_toolkits.mplot3d import Axes3Dcolors = cycle(‘bgrcmykbgrcmykbgrcmykbgrcmyk’)

1-D随机游走:

我们从原点出发(y=0),并选择一个step,以相等的概率移动每一个连续的step。起点用红色表示,终点用黑色表示。在下面的图中绘制了一个累加和,其中显示了在1D中10k步之间的轨迹。

Python实现如下:

# Define parameters for the walkdims = 1step_n = 10000step_set = [-1, 0, 1]origin = np.zeros((1,dims))# Simulate steps in 1Dstep_shape = (step_n,dims)steps = np.random.choice(a=step_set, size=step_shape)path = np.concatenate([origin, steps]).cumsum(0)start = path[:1]stop = path[-1:]# Plot the pathfig = plt.figure(figsize=(8,4),dpi=200)ax = fig.add_subplot(111)ax.scatter(np.arange(step_n+1), path, c=’blue’,alpha=0.25,s=0.05);ax.plot(path,c=’blue’,alpha=0.5,lw=0.5,ls=’ — ‘,);ax.plot(0, start, c=’red’, marker=’+’)ax.plot(step_n, stop, c=’black’, marker=’o’)plt.title(‘1D Random Walk’)plt.tight_layout(pad=0)plt.savefig(‘plots/random_walk_1d.png’,dpi=250);

2-D随机游走:

我们从原点(x = 0,y = 0)开始,并在每个方向上采取随机步骤,给出9个可能的每个步骤移动方向(Δx,Δy)⋲{-1,0,1} :(-1,-1), (-1,0), (-1,1),

(0,-1), (0,0), (0,1),

(1,-1), (1,0), (1,1)

超过10k步的模拟为我们提供了以下轨迹。在流体表面运动的粒子具有二维随机游走,并显示如下轨迹。

Python代码如下:

# Define parameters for the walkdims = 2step_n = 10000step_set = [-1, 0, 1]origin = np.zeros((1,dims))# Simulate steps in 2Dstep_shape = (step_n,dims)steps = np.random.choice(a=step_set, size=step_shape)path = np.concatenate([origin, steps]).cumsum(0)start = path[:1]stop = path[-1:]# Plot the pathfig = plt.figure(figsize=(8,8),dpi=200)ax = fig.add_subplot(111)ax.scatter(path[:,0], path[:,1],c=’blue’,alpha=0.25,s=0.05);ax.plot(path[:,0], path[:,1],c=’blue’,alpha=0.5,lw=0.25,ls=’ — ‘);ax.plot(start[:,0], start[:,1],c=’red’, marker=’+’)ax.plot(stop[:,0], stop[:,1],c=’black’, marker=’o’)plt.title(‘2D Random Walk’)plt.tight_layout(pad=0)plt.savefig(‘plots/random_walk_2d.png’,dpi=250);

多个2D随机游走的示例:

3-D随机游走:

我们从原点(x = 0,y = 0,z = 0)开始,并从一组27个方向(Δx,Δy,Δz)⋲{-1,0,1}中 选择一个随机方式的steps:

Python代码如下:

# Define parameters for the walkdims = 3step_n = 1000step_set = [-1, 0, 1]origin = np.zeros((1,dims))# Simulate steps in 3Dstep_shape = (step_n,dims)steps = np.random.choice(a=step_set, size=step_shape)path = np.concatenate([origin, steps]).cumsum(0)start = path[:1]stop = path[-1:]# Plot the pathfig = plt.figure(figsize=(10,10),dpi=200)ax = fig.add_subplot(111, projection=’3d’)ax.grid(False)ax.xaxis.pane.fill = ax.yaxis.pane.fill = ax.zaxis.pane.fill = Falseax.set_xlabel(‘X’)ax.set_ylabel(‘Y’)ax.set_zlabel(‘Z’)ax.scatter3D(path[:,0], path[:,1], path[:,2], c=’blue’, alpha=0.25,s=1)ax.plot3D(path[:,0], path[:,1], path[:,2], c=’blue’, alpha=0.5, lw=0.5)ax.plot3D(start[:,0], start[:,1], start[:,2], c=’red’, marker=’+’)ax.plot3D(stop[:,0], stop[:,1], stop[:,2], c=’black’, marker=’o’)plt.title(‘3D Random Walk’)plt.savefig(‘plots/random_walk_3d.png’,dpi=250);

在3D中模拟k个随机游走

现在我们在3D中模拟多个随机游走。每个随机游走表示点源的运动同时开始,起点设置在从(x,y,z)⋲[-10,10]中选择的点。

一些细胞/粒子在没有任何持续方向力的情况下运动,会出现这样的轨迹。三维随机游走的一个有趣的方面是,即使起点很近,随着时间的推移,对象会散开。

我们可以通过不同的测量方法来进行描述分析(距离,位移,速度,速度,角度分布,指示器计数,约束比等等)。我们还可以模拟directed/biased 随机游走,其中下一步取决于当前位置,或者由于某种形式的现有梯度或方向力。

# Define parameters for the walkdims = 3n_runs = 10step_n = 1000step_set = [-1, 0 ,1]runs = np.arange(n_runs)step_shape = (step_n,dims)# Plotfig = plt.figure(figsize=(10,10),dpi=250)ax = fig.add_subplot(111, projection=’3d’)ax.grid(False)ax.xaxis.pane.fill = ax.yaxis.pane.fill = ax.zaxis.pane.fill = Falseax.set_xlabel(‘X’)ax.set_ylabel(‘Y’)ax.set_zlabel(‘Z’) for i, col in zip(runs, colors): # Simulate steps in 3D origin = np.random.randint(low=-10,high=10,size=(1,dims)) steps = np.random.choice(a=step_set, size=step_shape) path = np.concatenate([origin, steps]).cumsum(0) start = path[:1] stop = path[-1:] # Plot the path ax.scatter3D(path[:,0], path[:,1], path[:,2], c=col,alpha=0.15,s=1); ax.plot3D(path[:,0], path[:,1], path[:,2], c=col, alpha=0.25,lw=0.25) ax.plot3D(start[:,0], start[:,1], start[:,2], c=col, marker=’+’) ax.plot3D(stop[:,0], stop[:,1], stop[:,2], c=col, marker=’o’);plt.title(‘3D Random Walk - Multiple runs’)plt.savefig(‘plots/random_walk_3d_multiple_runs.png’,dpi=250);

python游走代码_用Python模拟随机游走(Random walks)相关推荐

  1. python 运行程序代码_一些python程序

    <从问题到程序:用Python学编程和计算>--1.2 Python语言简介 本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第1章,第1.2节,作者 ...

  2. python好玩的代码_一行 Python 能实现什么丧心病狂的功能?

    能够把自身代码打印出来的程序,叫做Quine.下面是python的一行quine: ​有人说有分号不算一行,无分号版: 其实,如果你用程序语言的名字+quine作为关键字去搜索,你能找到各种语言实现的 ...

  3. python名片管理代码_学习python模拟的名片管理系统代码优化

    #请输入管理序号:#1.增加名片#input("请输入你的姓名:")#input("请输入你的联系方式:")#input("请输入你的qq:" ...

  4. python母亲节快乐代码_用 Python 送上特殊的母亲节祝福

    今天是母亲节,做儿女的自然要为母亲送上节日的祝福,如果自己在母亲身边的话,可以直接说几句祝福的话以及送一些小礼物什么的,要是不在母亲身边的话,可以打个电话问候一下. 当然了,作为一个程序员,除了上面的 ...

  5. python下载图片代码_使用Python下载Bing图片(代码)

    直接上代码: # -*- coding: cp936 -*- import urllib import os print 'Download data......' url = 'http://cn. ...

  6. python装b代码_一行python代码带你装B

    一行代码,python就能让你玩出花来.今天给大家介绍几个有趣的一行代码. 1.心形字符,全中文的话可能会变形,大家可以试试中英文搭配. print('\n'.join([''.join([('Ilo ...

  7. python计算面积代码_利用Python求阴影部分的面积实例代码

    利用Python求阴影部分的面积实例代码 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  利用Python求阴影部分的面积实例代码.txt ] (友情提示:右键点 ...

  8. 用python开发程序代码_用Python开发一款王者荣耀的“脚本”!上王者轻轻松!

    王者荣耀 -很火的手游-简直老少通吃-令人发指-虽然操作简单-但为什么你还是会被虐, 其实 是有技巧的--本文Python大神带你研究王者荣耀各类英雄的出装小技巧,让你成为大神般的存在 前期准备 环境 ...

  9. python 背景音乐程序代码_用Python演奏音乐

    背景 笔者什么乐器也不会,乐理知识也只有中小学音乐课学的一点点.不过借助Python,调用编曲家常用的MIDI程序库,也能弹奏出一些简单的音乐,以下是笔者的一些心得. 准备 安装mingus 首先是安 ...

  10. python 运行部分代码_改改Python代码,运行速度还能提升6万倍

    如果摩尔定律注定终结,人类的算力会被「锁死」吗?MIT.英伟达.微软研究者合著的一篇 Science 论文告诉我们:不会. 这份最新研究指出,在后摩尔定律时代,人类所获得的的算力提升将更大程度上来源于 ...

最新文章

  1. 从某一日期开始过day天的日期
  2. java规则计算_java实现的霍纳规则的多项式计算
  3. 更方便的函数回调——Lambda
  4. idea 不打开文件提示错误_解决IDEA误删out目录下的文件导致404无法访问的问题
  5. jbpm4.4表结构
  6. 九州云腾双因素认证系统_阿里云全资收购九州云腾,加速构建云上零信任体系...
  7. Go 语言里怎么正确实现枚举?答案藏着官方的源码里
  8. 【语言处理与Python】4.7算法设计
  9. 这是属于格式的问题么?下划线的位置
  10. 计算机专业方向是什么意思,计算机专业就业方向是什么
  11. Windows系统端口占用,使用命令行查找并杀进程
  12. log4j2漏洞复现
  13. 如何解决hangfire使用redis存储时,如果采用了prefix报“Key has MOVED from Endpoint”的错...
  14. iOS开发之MOVE设计模式
  15. Python_机器学习_常用科学计算库_第6章_ Seaborn+综合案例
  16. 暑假集训 ---- 字符串2 (SAM专题)
  17. MATLAB app 实现音乐播放器
  18. 简述驱动桥的动力传递路线_汽车驱动桥概述
  19. 微信辅助验证 信息填写正确 却提示绑卡信息错误的解决办法
  20. LJJ爱数数(莫比乌斯反演)

热门文章

  1. 如何删除数据库中的冗余数据
  2. postgres使用with计算占比,同比和环比
  3. spark写入Oracle 报错 java.lang.ArrayIndexOutOfBoundsException: -32423
  4. Bouncy Castle 密码包的配置及使用详解
  5. 移动电子商务:五个技术标准与Trustonic TEE解决方案【转】
  6. matlab栅格化处理,栅格化处理方法和栅格图像处理器的制造方法
  7. 【JavaEE-面试总结】(未完,待续···)
  8. react-native 报错 Text strings must be rendered within a <Text> component.
  9. PHP 互亿无线语音通知
  10. 阿里云物联网平台基础