我正在运行while循环,无法调试以下代码。你能帮忙吗?
import numpy as np
np.random.seed(1)
VVV = list(np.random.uniform(100, 10000, 500))
muj = [1/(VVV[j]*(1/70)/year/hour) for j in range(500)]
wj = list(np.random.uniform(1, 5, 500))
rholist = list(np.random.uniform(0, 0.02, 500))
lambdaj = [rholist[i]*muj[i]/wj[i] for i in range(500)]
tauIj = list(np.random.uniform(20/year, 40/year, 500))
for j in range(500):
while lambdaj[j]>0.17 or lambdaj[j]<0.0005 or tauIj[j]*lambdaj[j] >= 1:
rholist = list(np.random.uniform(0, 0.02, 500))
lambdaj = [rholist[i]*muj[i]/wj[i] for i in range(500)]
tauIj = list(np.random.uniform(20/year, 40/year, 500))
我首先创建VVV
,muj
,wj
和rholist
。然后,我想创建一个lambdaj
和tauIj
列表,以满足lambdaj
的每个元素以0.0005
和0.17
为界,以及{中的每个元素的叉积{1}}和tauIj
严格小于lambdaj
。我不知道我在哪里做错了。顺便说一句,即使列表中的一项不满足这些条件,我也有意重新采样整个列表。
答案 0 :(得分:0)
基本上,根据我从评论中了解到的信息,如果您发现“不良”值,则需要重新采样所有内容,然后从头开始重新检查。您无法在for
的{{1}}循环中执行此操作,而只能在python
循环中执行此操作。因此将其更改为:
while
但是我对您需要重新采样多少次不承担任何责任,因此在重新启动j = 0
while j < 500:
if lambdaj[j]>0.17 or lambdaj[j]<0.0005 or tauIj[j]*lambdaj[j] >= 1:
<your resamples...>
j = -1 #To start from the beginning
j += 1
之前可能是个好主意,因此您可能会知道如果您的条件可能存在500个样本空间。