我想運行一個模擬,它使用從下限A,模式B和上限C的三角概率分佈生成的值作爲參數。我如何在Python中生成這個值?是否有這樣簡單的expovariate(lambda)(從隨機)這個分佈或我必須編碼這個東西?Python,SimPy:如何從三角概率分佈生成一個值?
6
A
回答
6
如果你下載NumPy包,它有一個函數numpy.random.triangular(left,mode,right [,size]),它完全符合你的要求。
4
由於,我是從Python 2.4中檢查隨機的文檔,我錯過此:
random.triangular(低,高,模式)¶ 返回一個隨機浮點數N,使得低< = N < =高,並在這些邊界之間指定模式。低限和高限默認爲零和1。 mode參數默認爲邊界之間的中點,給出對稱分佈。 版本2.6中的新功能。
2
假設您的發行版不是由NumPy或Python標準庫處理的。
在性能不是非常重要的情況下,拒絕抽樣對於從您沒有使用的分配中獲取抽獎是一種有用的方法。
爲了您的三角形分佈,你可以不喜歡
from random import random, uniform
def random_triangular(low, high, mode):
while True:
proposal = uniform(low, high)
if proposal < mode:
acceptance_prob = (proposal - low)/(mode - low)
else:
acceptance_prob = (high - proposal)/(high - mode)
if random() < acceptance_prob: break
return proposal
您可以繪製一些樣品
pylab.hist([random_triangular(1, 6, 5) for t in range(10000)])
,以確保一切正常。
+0
尼斯通用暗示!對於OP,這裏的想法是將均勻度與期望分佈的密度相關聯。 – 2012-01-01 20:49:02
相關問題
- 1. 生成概率分佈
- 2. 從三維概率分佈生成隨機數
- 3. numpy生成離散概率分佈
- 4. 概率分佈值情節
- 5. 從具有兩個峯值的直方圖生成概率分佈
- 6. 用matplotlib繪製三維概率分佈
- 7. 在Matlab中生成三角形分佈
- 8. 如何使用概率分佈對象計算一個點的概率?
- 9. 如何生成具有不同概率的向量。每個元素的分佈
- 10. Python中的概率分佈函數
- 11. 使用一個概率集合來生成另一個概率集合
- 12. 從C++中概率分佈向量生成隨機數發生器
- 13. 在測試的每次運行中生成一個相同的概率分佈
- 14. 有沒有一個用於在JavaScript中生成概率分佈的科學庫?
- 15. 建立從兩個分佈的概率分佈在朱莉婭
- 16. 如何在R中創建一個概率分佈的矩陣
- 17. 根據概率分佈函數生成隨機數
- 18. 用概率分佈生成範圍內的隨機整數
- 19. 以概率生成true或false布爾值
- 20. 如何從離散概率質量函數創建一個dsicrete概率分佈函數
- 21. 模擬從一個(任意的)連續概率分佈
- 22. 計算概率分佈
- 23. matlab概率分佈擬合
- 24. Python:從幾何分佈生成
- 25. Python 3.3:生日概率
- 26. 在Matlab中生成概率
- 27. 概率生成函數
- 28. 從python中的列表生成一個隨機的,等概率的組合
- 29. Python - 如何用逐位概率生成隨機數?
- 30. Python numpy根據概率生成隨機二進制值數組
對於大多數使用情況來說,這可能是比公認的更好的答案。雖然這個API與NumPy有不同的順序,但這有點令人煩惱! – 2016-04-04 15:51:40