Dsb2023coll-denshi
23/32

yO図2.22:ランダムウオークとそのプログラム図2.23:ランダムウオークの実行例図2.21:一様乱数の生成例このようにして得られる 39, 61, 15, … は0から63の範囲の整数になります。これを乱数とみなします。生成することができます。•原点(0,0)から出発してランダムな方向に1mずつ移動。•考え方:次の1歩がx軸となす角度θを乱数にする。このプログラムではグラフ表示のために matplotlib というライブラリを呼び出しています。 plt.plot(x,y)により、配列x,y に記憶された点を線で結んで表示しています。235×123 ÷ 64 = 9…39, 39×123 ÷ 64 = 74…61, 61×123 ÷ 64 =117…15random.randint(a,b) により、 a から b-1の範囲の整数を一様に生成します。図2.21に1から6までの乱数をまとめて10個生成してsaikoroという配列に保存するプログラムを示します。(xi,yi)θ(xi-1,yi-1) xi = xi-1 + cosθ yi = yi-1 + sinθXimport matplotlib.pyplot as pltimport numpy as np n=1000 x=np.zeros(n) y=np.zeros(n) seed=int(input('random seed :')) np.random.seed(seed) for i in range(1,n): theta=2.0*np.pi*np.random.rand() x[i]=x[i-1]+np.cos(theta) y[i]=y[i-1]+np.sin(theta) plt.plot(x,y) plt.title('random walk') plt.xlabel('x') plt.ylabel('y') #1から6までの乱数を10個生成 import numpy as np n=10 saikoro=np.random.randint(1,7,n) print(saikoro) 実行結果 [5 6 6 1 2 6 1 1 4 2]乱数とシミュレーション計算機の中でサイコロを振ることに相当するのが乱数です。ある規則に基づいて数を生成しますので、厳密な意味では乱数とは言えず、擬似乱数と言います。たとえば、整数にある数を掛けて、別の整数で割った余りを次の数とします。乱数生成例NumPyの関数 random.rand()によって0以上1未満の一様乱数をランダムウオークとグラフ作成太陽内部で光子は電子によって何回も散乱されるため、なかなか表面に出てくることができません。このような現象のモデルとして、原点から出発して、ある距離進むごとに進行方向がランダムに変わる運動を追跡するプログラムを図2.22に示します。乱数の種になる整数 seedを入力しています。

元のページ  ../index.html#23

このブックを見る