覆盖FOR循环

时间:2017-12-08 18:00:14

标签: python

在我的Python代码中,我试图迭代高斯函数。

我正在定义变量x0 = 2,然后我使用For循环对其进行数学计算,然后我尝试使用值x0覆盖x_test的值。我想循环多次以获得高斯函数的形状(所以我想像蒙特卡罗方法)。

我不能做的是弄清楚如何在每次迭代后用x0的值覆盖x_test的值。

有人可以给我一些指示吗?因为我无法找到答案。任何帮助将不胜感激!

谢谢!

我的代码:

from random import random
import random
from math import exp, pow
import math
from random import randint

amp = 0.85
x0 = 2.0

def overwrite(x):
    global x0
    x0 = x

for n in iter(overwrite, 10000):
    uniform = random.uniform(0, 1)
    if uniform < 0.5:
        sigma_int = 1
    else:
        sigma_int = -1
    sigma_uni = round(random.uniform(0, 1),5)
    x_test = foobar(2.0) + sigma_int * amp
    P = (exp(-pow(x_test, 2))) / (exp(-pow(x0, 2)))
    if (P > sigma_uni):
        f = open('pyton.txt', 'a')
        f.write("%s %s\n" % (float(x_test), float(P)))
        f.close()

1 个答案:

答案 0 :(得分:-1)

由于您正在定义全局x0,因此可以在循环中调用它。在观察您的代码后,我认为您没有将'x_test'的值分配给'x0'。所以只需在循环内完成。 要确认它是否正常工作,您可以输入如下调试语句: print(x0)替换后的值会让你知道它是否正常工作。尝试使用打印调试是检查问题的最佳方法。