我在做一個代碼來模擬布朗運動。如何在有很多列表時如何最小化代碼?
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'後,用'def function_name(N):'替換第一行'N = 100',然後縮進其下的其餘代碼。之後,您可以調用新函數並將粒子數作爲參數值傳遞給它:即'function_name(42)'。 – martineau