ブラウン運動をシミュレートするコードを作っています。リストがたくさんあるときにコードを最小限に抑える方法は?
from random import random
import matplotlib.pyplot as plt
import numpy as np
N=100
p=0.5
l=1
x1=[]
x2=[]
x1.append(0)
x2.append(0)
for i in range(1, N):
step = -l if random() < p else l
X1 = x1[i-l] + step
x1.append(X1)
for i in range(1, N):
step = -l if random() < p else l
X2 = x2[i-l] + step
x2.append(X2)
x1mean=np.array(x1)
x2mean=np.array(x2)
mean=[]
for j in range (0,N):
mean.append((x1mean[j]+x2mean[j])/2.0)
plt.plot(mean)
plt.plot(x1)
plt.plot(x2)
plt.show()
このコードは、2個のdiferent粒子に対する変位になりますが、あなたが見ることができるように適切に意味の変位を計算するために、私は粒子の多くを持っている必要があります、私が探しています、100が好き私は同じコードを100回繰り返すことができないので、コードを凝縮する方法です。
このコードを1変数、つまりパーティクルの数で機能させるループを作成する方法はありますか?
ありがとうございました。
'import'sの後に、' N = 100'の最初の行を 'def function_name(N):'に置き換え、その下の残りのコードをインデントします。その後、新しい関数を呼び出して引数の値としてパーティクル数を渡すことができます: 'function_name(42)'。 – martineau