2009-11-26 161 views
1

我收到了一個問題,在我的代碼中,任何人都可以提供幫助。 這是示例代碼。如何解決隨機產生的值?

from random import *  
from numpy import * 
r=array([uniform(-R,R),uniform(-R,R),uniform(-R,R)]) 

def Ft(r): 
    for i in range(3): 
     do something here, call r 
    return something 

但是我發現,在Python Shell,我每次運行函數FT,它給了我不同的 結果.....好像函數中,在for循環迭代每一個,調用一次R ,它給了一次隨機數......但是當我調用函數時不能修正最初的隨機數......我該如何解決它? 如何使用b = copy(r)然後在Ft函數中調用b? 謝謝

回答

6

你的意思是你想randon.uniform()調用每次返回值的相同序列運行功能?
如果是這樣,您需要撥打random.seed()將序列的開始設置爲固定值。如果不這樣做,則使用當前系統時間初始化隨機數生成器,以便每次都生成不同的序列。

像這樣的東西應該工作

random.seed(42) # Set the random number generator to a fixed sequence. 
r = array([uniform(-R,R), uniform(-R,R), uniform(-R,R)]) 
+0

謝謝回答,有很大的幫助!不過我不太明白那是什麼意思100? – user211037 2009-11-26 20:02:50

+2

奇怪的是,'100'只是一個隨機數。爲了確保'隨機'函數返回相同的序列,每次需要將相同的值傳遞給'seed()',但實際值本身並不相關。 100碰巧是第一個想到的人。 如果我一直在想更多,我可能已經42歲了。 – 2009-11-26 21:04:58

1

我認爲你的意思是'list'而不是'array',你試圖在你真的不需要的時候使用函數。如果我理解正確的話,你要編輯的隨機浮動的列表:

import random 
    r=[random.uniform(-R,R) for x in range(3)] 
    def ft(r): 
     for i in range(len(r)): 
      r[i]=???