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