112、复盘:随机漫步

案例:从0开始,步长1和-1出现的概率相等。通过内置的random模块以纯python的方式实现1000步的随机漫步:

图片发自简书App

图片发自简书App

在In[1]:中代码random.randint()表示随机生一个整数int类型,可以指定这个整数的范围,同样有上限和下限值。

从代码运行的结果看出,随机漫步就是把各步数的累计和用一个数组运算来实现。

我用np.random模块一次性随机产生1000个“掷硬币的结果,将其分别设置为1或-1,然后计算累计和:

图片发自简书App
图片发自简书App
可以求出walk_2中的最大值和最小值:
图片发自简书App
假设我们要知道本次随机漫步需要多久才能距离初始0点至少10步远(任一方向均可)。np.abs(walk_2) >= 10 可以得到一个布尔型数组,它表示的是距离是否达到或超过10,使用argmax函数获取第一个10或-10的索引。argmax返回的是该布尔型数组第一个最大值的索引(True就是最大值):
图片发自简书App

一次模拟多个随机漫步

使用numpy.random函数传入一个二元元组生成一个二维数组,然后一次性计算5000个随机漫步过程(一行一个)的累积和:

图片发自简书App
图片发自简书App
计算所有漫步过程的最大值和最小值:
图片发自简书App
计算30或-30的最小穿越时间,使用any函数检查是否5000个过程都达到30:
图片发自简书App
利用布尔型数组选出穿越30或-30的随机漫步(行),并调用argmax函数在轴1上获取穿越时间:
图片发自简书App

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。