ランダムウォーク
wikipediaによると、
ランダムウォークは、次に現れる位置が確率的に無作為(ランダム)に決定される運動である。
のだそう。液体中の粒子の運動で知られるブラウン運動やコイントスによるすごろくみたいなのもランダム・ウォークの一種である。
100ステップのランダム・ウォークはこんな感じになる。
10000ステップのランダム・ウォークを100回行うとこんな感じになる。
ちなみにこんな感じの実装。
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import random import matplotlib.pyplot as plt def toss(): # coin tass return 1 if random.random() <= 0.5 else -1 def walk(n=30, y0=0): """walk random walk Keyword arguments: n -- number of trials y0 -- first position of y """ i = 0 y = [y0]*n while i < n-1: y[i+1] = y[i] + toss() i = i + 1 return y if __name__ == '__main__': c = 10 # number of run walk() N = 1000000 # number of walk traials y0 = 0 # first position n = list(range(N)) ave = [0] * N # average y for i in range(c): y = walk(N, y0) ave = list(map(lambda a, b: a + b, ave, y)) plt.plot(n, y) plt.plot(n, [y0]*N, lw=5, color = 'g') # first position plt.plot(n, ave, lw=5, color = '#000000') # average position plt.grid() plt.show()