[問題] 從n中取k可重複的組合想不全部展開
投資組合為1將權重k等分分配到n個股票,每個股票可分配權重0(零),1/k,2/k,...1
(全部)將k等分分配到n個股票。
即「從n中取k可重複的組合」,組合數為 C(n+k-1,n-1)。
故權重編號範圍為1~C(n+k-1,n-1)
權重串列(整數版)為(n,0,...0,0),(n-1,1,...,0,0),...(0,0,...,0,n)。
權重串列(小數版) = 權重串列(整數版)/n。
如連結是我的Python程式,我使用「全部組合展開」的方法:
k_i=10 n_j=5 cnt_j=1001 base_j=3.98 duration_j=0.01
當k=10, n=5時共有1001種組合,全部組合展開需時0.01秒,但:
k_i=20 n_j=10 cnt_j=10015005 base_j=5.01 duration_j=86.33
當k=20, n=10時共有10015005種組合,需時已達86.33秒,
這樣對k,n值形成很大的限制。
我的目的不是要將全部組合展開,而是要隨機映射編號和組合,
例如:n=8, k=4時有165種組合,
正向:當我輸入編號21時要輸出 (0.375, 0.375, 0.25, 0.0)
反向:當我輸入(0.375,0.375,0.25,0.0)要得到編號21
有什麼方法可以計算?感謝先
https://tinyurl.com/yvkpanm6
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.68.238.10 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1714522756.A.8FE.html
推
05/01 09:44,
6月前
, 1F
05/01 09:44, 1F
→
05/01 09:44,
6月前
, 2F
05/01 09:44, 2F
推
05/01 10:10,
6月前
, 3F
05/01 10:10, 3F
→
05/01 19:28,
6月前
, 4F
05/01 19:28, 4F
→
05/01 19:29,
6月前
, 5F
05/01 19:29, 5F
→
05/01 19:31,
6月前
, 6F
05/01 19:31, 6F
→
05/02 08:54,
6月前
, 7F
05/02 08:54, 7F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章