python 实现随机漫步

1.

纯python

In [247]: import random
.....: position = 0
.....: walk = [position]
.....: steps = 1000
.....: for i in range(steps):
.....: step = 1 if random.randint(0, 1) else -1
.....: position += step
.....: walk.append(position)
.....:
In [249]: plt.plot(walk[:100])
In [250]: plt.show()
View Code

2.

numpy实现

nsteps=1000
draws=np.random.randint(0,2,size=nsteps)
steps=np.where(draws>0,1,-1)
walk=steps.cumsum()
plt.plot(walk)
plt.show()
View Code

3.

np.random.randint(low, high=None, size=None, dtype='l')

参数如下:

low: int
生成的数值最低要大于等于low。
(hign = None时,生成的数值要在[0, low)区间内)
high: int (可选)
如果使用这个值,则生成的数值在[low, high)区间。
size: int or tuple of ints(可选)
输出随机数的尺寸,比如size = (m * n* k)则输出同规模即m * n* k个随机数。默认是None的,仅仅返回满足要求的单一随机数。
dtype: dtype(可选):
想要输出的格式。如int64、int等等
————————————————
版权声明:本文为CSDN博主「安ann」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011851421/article/details/83544853
View Code

 4.加时间限制,比如:要几步穿越10

⾸次穿越时间,即随机漫步
过程中第⼀次到达某个特定值的时间。假设我们想要知道本次随
机漫步需要多久才能距离初始0点⾄少10步远(任⼀⽅向均
可)。np.abs(walk)>=10可以得到⼀个布尔型数组,它表示的是
距离是否达到或超过10,⽽我们想要知道的是第⼀个10或-10
的索引。可以⽤argmax来解决这个问题,它返回的是该布尔型
数组第⼀个最⼤值的索引(True就是最⼤值):

In [257]: (np.abs(walk) >= 10).argmax()
Out[257]: 37
View Code

 

posted @ 2020-03-20 10:20  爬爬QQ  阅读(268)  评论(0)    收藏  举报