所以我试图添加两个列表,一个名义列表和一个随机数列表,一起创建一个由正值组成的新列表。我的问题是我的随机数列表是从正态分布(random.normalvariate(0, SD)
)生成的,这意味着在对两个列表求和时偶尔会得到负值,这是我不想要的。
我尝试使用while循环来解决此问题,以检查每个项目中两个列表的总和是否创建负值,以及是否使用新的随机数替换随机数。但是,无论我如何调整它,我的代码似乎都没有替换这些值。这是我目前的尝试。
nominalList = [1,2,3,4,5]
randomList = []
for n in xrange(0, len(nominalList)):
randomList.append(random.normalvariate(0, SD))
while nominalList[n] + randomList[n] < 0:
randomList[n] = random.normalvariate(0, SD)
答案 0 :(得分:0)
您需要再次迭代索引并重新分配任何不符合条件的索引:
import random
SD = 7
nominalList = [1,2,3,4,5]
randomList = [random.normalvariate(0, SD) for n in nominalList]
for i,n in enumerate(nominalList):
while n + randomList[i] < 0:
randomList[i] = random.normalvariate(0, SD)
或者另一个想法,只需缩进原始代码中的while
:
nominalList = [1,2,3,4,5]
randomList = []
for n in xrange(0, len(nominalList)):
randomList.append(random.normalvariate(0, SD))
while nominalList[n] + randomList[n] < 0:
randomList[n] = random.normalvariate(0, SD)