[英]Generate n random variables whose sum will be 1
我正在嘗試生成一個列表,其中將包含一些總和為1的數字。我正在嘗試的代碼是:
listA = np.zeros(3)
while(sum(listA) != 1):
listA = container(np.random.rand() for _ in range(n))
但是,這將永遠運行。 條件是:數字必須為0或正數。 有沒有簡單的方法可以做到這一點? 謝謝。
這個:
listA = [np.random.rand() for _ in range(3)]
scale = sum(listA)
listA = [i / scale for i in listA]
也許這足夠了:
a = np.random.rand()
b = np.random.rand()
while a+b >= 1.0:
b= np.random.rand()
c = 1.0 - a - b
listA = np.array([a,b,c])
在0到1之間創建(n-1)個隨機浮點數。對它們進行排序。 計算1與最高,最高與第二最高之間的間隔,依此類推。 所有間隔的總和等於1。有n個這樣的間隔(最低的0到最低的間隔)。
更新:我是唯一看到上述縮放方法存在嚴重問題的人嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.