【发布时间】:2015-10-20 19:53:28
【问题描述】:
我得到一个随机数生成错误,例如,
Traceback(最近一次调用最后一次):文件 “C:\Users\SONY\Desktop\deneme.py”,第 34 行,在 update(x) 文件“C:\Users\SONY\Desktop\deneme.py”,第 12 行,更新中 x[j] = x[j] + uniform(-1.4,1.4) NameError: global name 'uniform' is not defined
我的代码如下
N = 20
N_cor = 25
N_cf = 25
a = 0.5
eps = 1.4
def update(x):
for j in range(0,N):
old_x = x[j]
old_Sj = S(j,x)
x[j] = x[j] + uniform(-eps,eps)
dS = S(j,x) - old_Sj
if dS>0 and exp(-dS)<uniform(0,1):
x[j] = old_x
def S(j,x):
jp = (j+1)%N
jm = (j-1)%N
return a*x[j]**2/2 + x[j]*(x[j]-x[jp]-x[jm])/a
def compute_G(x,n):
g = 0
for j in range(0,N):
g = g + x[j]*x[(j+n)%N]
return g/N
x=[]
for j in range(0,N):
x.append(0.0)
print"x(%d)=%f"%(j,x[j])
for j in range(0,5*N_cor):
update(x)
for alpha in range(0,N_cf):
for j in range(0,N_cor):
update(x)
for n in range(0,N):
G[alpha][n] = compute_G(x,n)
for n in range(0,N):
avg_G = 0
for alpha in range(0,N_cf):
avg_G = avg_G + G[alpha][n]
avg_G = avg_G / N_cf
print "G(%d) = %f"%(n,avg_G)
您能帮我了解如何在 (-eps,eps) 范围内生成一个统一的随机数吗?
【问题讨论】:
-
from random import uniform