2016-02-27 175 views
-1

除非我已經完全瘋,所述文檔numpy.random.exponential()numpy.random.exponential(標度= 1.0)返回數大於1

http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.exponential.html

表明設置刻度參數設置爲1.0應該保證函數調用返回一個介於0.0和1.0之間的數字,因爲它只被定義爲x> 0.

我已經在wolfram alpha上繪製了它,以驗證我不會精神錯亂,從0到1.

https://www.wolframalpha.com/input/?i=graph+exp(-x)+from+-1+to+10

我也都嘗試numpy.random.exponential(),因爲默認參數爲1.0和numpy.random.standard_exponential(),但兩者有時給我值大於1

我覺得像我在我的理解中犯了一些愚蠢的錯誤,但找不到它。任何幫助將不勝感激。

示例代碼我跑:

import numpy as np 
print np.random.exponential(scale=1.0) 

實施例返回值:

1.56783951494 

回答

1

的指數函數具有PDF = 1 /β* EXP(-x /測試版)。你正在傳遞scale = beta = 1.0,所以你有pdf = 1/1 * exp(-x/1)= exp(-x)。

這不是上面。事實上爲零,你獲得0和1之間的數字的63%的機會,並獲得高於1的值的37%的機會:

>>> quad(lambda x: np.exp(-x), 0, 1) 
(0.6321205588285578, 7.017947987503856e-15) 
>>> quad(lambda x: np.exp(-x), 1, np.inf) 
(0.3678794411714423, 2.149374899076157e-11) 

檢查:

>>> ns = np.random.exponential(scale=1.0, size=10**6) 
>>> (ns < 1).mean() 
0.63164799999999 

現在這是真的,0和1,但之間的PDFexp(-x)住宿並不意味着所有的隨機數得出從分佈將是0到1之間1.

想到一個模具:任意定勝負的機率爲1/6,但每一個數字的結果是> = 1

+0

非常感謝,我誤解了。它不返回函數值,它返回x。 – Nyzarc

0

我想我已經實現了我的愚蠢的錯誤。它不返回f(x,beta)它返回x。謝謝!