[問題] 從n中取k可重複的組合想不全部展開

看板Programming作者 (傑生方的鐵粉)時間2周前 (2024/05/01 08:19), 編輯推噓2(205)
留言7則, 3人參與, 2周前最新討論串1/2 (看更多)
投資組合為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, 2周前 , 1F
按照開頭敘述,權重不是1/k的倍數嗎?但是
05/01 09:44, 1F

05/01 09:44, 2周前 , 2F
範例怎麼好像是1/n的倍數?
05/01 09:44, 2F

05/01 10:10, 2周前 , 3F
範例寫反了吧, 那看起來是 n=4 k=8
05/01 10:10, 3F

05/01 19:28, 2周前 , 4F
例如k=10(10等份)分給3個股票
05/01 19:28, 4F

05/01 19:29, 2周前 , 5F
(3/10,4/10,3/10)是一種分法 n=3
05/01 19:29, 5F

05/01 19:31, 2周前 , 6F
我上面寫錯了,應該是k=8,n=4
05/01 19:31, 6F

05/02 08:54, 2周前 , 7F
抱歉:(小數版) = (整數版)/k 才對
05/02 08:54, 7F
文章代碼(AID): #1cCOg4Z- (Programming)
文章代碼(AID): #1cCOg4Z- (Programming)