Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过重复循环步骤接受参数的特定值_Python_While Loop - Fatal编程技术网

Python 通过重复循环步骤接受参数的特定值

Python 通过重复循环步骤接受参数的特定值,python,while-loop,Python,While Loop,如果不满足下面的条件,Python会重复该步骤的计算吗?我们无法删除包含负值om的输出。我们必须用不同的随机数重复这一步,这导致了负值N是1000,我们必须有1000个输出 条件:如果每个步骤的mo[i]0 #initial values mo = np.zeros((1000,)) mo[0]=0.24 mn = np.zeros((1000,)) Wo = np.zeros((1000,)) Wo[0]=0.2 Wn = np.zeros((1000,)) def F( x, y):

如果不满足下面的
条件
,Python会重复该步骤的计算吗?我们无法删除包含负值
om
的输出。我们必须用不同的随机数重复这一步,这导致了负值<代码>N是1000,我们必须有1000个输出

条件:如果每个步骤的mo[i]0

#initial values
mo  = np.zeros((1000,))
mo[0]=0.24
mn = np.zeros((1000,))
Wo  = np.zeros((1000,))
Wo[0]=0.2
Wn = np.zeros((1000,))

def F( x, y):
    return....

N=1001
for i in range (1,N):
    R=np.random.uniform(0,1)

    mn[i] = mo[i-1] + 0.05 * np.random.normal()
    Wn[i] = Wo[i-1] + 0.05 * np.random.normal()

    L = exp(-0.5 * ( F(mn[i], Wn[i] ) - F( mo[i-1], Wo[i-1])))

    if L>R:
        Wo[i]=Wn[i]
        mo[i]=mn[i]

    else:
        Wo[i]=Wo[i-1]
        mo[i]=mo[i-1]

    print(Wo[i],mo[i])

这个问题在下面的部分中,使用带break语句的while循环

for i in range(1,N):
    while True:
        mo[i] = get_mo_i()

        if mo[i] > 0:
            break
其中
get\u mo\u i()
应替换为当前循环中的所有内容。我只是不想把它全部打印出来

如果担心代码没有结束,可以设置循环重复频率的限制

for i in range(1,N):
    num = 0
    while True:
        num += 1
        mo[i] = get_mo_i()

        if mo[i] > 0 or num > 10:
            break

只有在连续获得负值
10次
时,上面的一个才会使
mo[i]
保持负值。这表明您可能对初始条件有问题,或者仅仅是
mo[i-1]
的值不太可能产生正
mo[i]

是否可以更改
num>10
的值?例如:
>100
。这个值的变化会影响输出吗?当然,10只是我使用的一个任意数字。也就是说,看看代码,如果mo[i-1]为0,而L10为0,则由于随机概率,循环失败的概率约为1/1024。设置num>30,大约为十亿分之一。如果mo[i]在这一点上是负数,那么很可能代码中的其他地方有错误。所以不要设定得太高。如果有一个关键的bugAh,它只会使代码的这一部分运行得更长,所以无论我们选择5还是15都没有关系。一般来说,它保持我们的价值为负。此外,我们还可以添加一些其他条件。
如果mo[i]>0和Wo[i]10:
编写它是否正确?这很好,不过我建议添加括号以便更清晰地阅读<代码>例如,如果(mo[i]>0和Wo[i]<0)或num>10:
将帮助其他人阅读您的代码。谢谢您,我知道
虽然
但如果您的答案中没有
num
,我的示例将无法使用。再加上它,一切都很好。