【问题标题】:Random Number Error in PythonPython中的随机数错误
【发布时间】: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

标签: python random


【解决方案1】:

您需要在代码开头导入随机并调用

random.uniform(a, b)

而不仅仅是统一的。

关于随机数库的 Python 文档

https://docs.python.org/2/library/random.html

【讨论】:

    【解决方案2】:

    在代码的开头添加行from random import uniform 这会导致你每次调用uniform()时都会调用随机包的统一函数

    另一种选择是在文件顶部添加import random 行并将uniform() 的每个实例替换为random.uniform()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-29
      • 1970-01-01
      • 2020-09-22
      • 2016-11-02
      • 2018-06-14
      • 2020-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多