2
我想與scipy.stats.gamma.rvs包裝功能來使用不同的paremetres在python
以產生伽馬分佈的隨機變量然而,API接受的形狀和尺度參數作爲輸入,並予想使用平均值和標準偏差作爲輸入。
我可以寫一個包裝,它將得到平均值和std作爲輸入,計算比例和形狀,並比使用gamma.rvs生成隨機變量。但我期望有很多這個函數的調用,所以我寧願如果我不必每次都進行計算。
我想出了以下解決方案:
from scipy.stats import gamma
def gamma_rvs_generator(mu, sigma):
var = sigma ** 2
scale = var/mu
a = mu/scale
return lambda: gamma.rvs(a=a, scale=scale)
if __name__ == '__main__':
gen = gamma_rvs_generator(10, 10)
print(gen())
這工作完全就像我希望它的工作。但是我想問一下,如果有什麼更好的或更多的pythonic解決方案。
另一種方法是編輯API,但好,這是情況並非如此。順便說一下,你爲什麼使用'lambda'? – magicleon
@magicleon這使得它可以重複調用'0'參數,每次生成一個不同的隨機數。如果沒有'lambda',它會返回一個隨機數,因此需要用每個新的隨機數重新運行包裝器。 –
哦,像一個構造函數?太好了! – magicleon