簡體   English   中英

Python中的隨機數錯誤

[英]Random Number Error in Python

我得到一個隨機數生成錯誤,例如,

追溯(最近一次通話):文件“ C:\\ Users \\ SONY \\ Desktop \\ deneme.py”,第34行,位於update(x)文件“ C:\\ Users \\ SONY \\ Desktop \\ deneme.py”,第12行,在更新中x [j] = x [j] +統一(-1.4,1.4)NameError:全局名稱'uniform'未定義

我的代碼如下

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)嗎?

您需要在代碼的開頭隨機導入並調用

random.uniform(a, b)

而不只是制服。

隨機數庫上的Python文檔

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

在代碼的開頭,添加from random import uniform的行from random import uniform這將使您每次調用uniform()時都調用隨機包的制服功能。

另一個選擇是在文件頂部添加import randomimport random ,並用random.uniform()替換每一uniform()實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM