【发布时间】:2022-01-07 20:11:04
【问题描述】:
我有生成许多 N 个序列并存储它们的代码。如果我将runs 设为大,则循环可能会卡在代码的while N[j] > 0: 部分。在 while 循环中包含跳过某个步骤的最佳方法是什么,例如循环中该步骤中的时间是否超过几秒钟并移至下一个步骤?
runs = 20
Lloc = 1
n0 = 1
#Empty list to store N series
N_array = []
#Empty list to store z series
z_array = []
for r in range(0,runs):
#Set initial z series values to be zero
z = [0]
#Set initial jump process values to be n0
N = [n0]
#Set iteration to be zero
j = 0
#While
while N[j] > 0:
z.append(z[j] + np.random.exponential(Lloc/(2*N[j]**2)))
#Pick jump at position j+1 to be N[j] -1 or +1 with prob 1/2
N.append(N[j] + np.random.choice([-1,1]))
#Update iteration
j = j+1
#Store N,z realisation if sum dz < 10 say
if sum(np.diff(z)) < 10:
N_array.append(N)
z_array.append(z)
#Completion
print((r+1)/runs*100,'%')
【问题讨论】:
标签: python loops time while-loop