看板 Programming 關於我們 聯絡資訊
投資組合為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
gusion: 按照開頭敘述,權重不是1/k的倍數嗎?但是 1.169.71.217 05/01 09:44
gusion: 範例怎麼好像是1/n的倍數? 1.169.71.217 05/01 09:44
LPH66: 範例寫反了吧, 那看起來是 n=4 k=8123.194.181.180 05/01 10:10
dinohsu1019: 例如k=10(10等份)分給3個股票 219.68.238.10 05/01 19:28
dinohsu1019: (3/10,4/10,3/10)是一種分法 n=3 219.68.238.10 05/01 19:29
dinohsu1019: 我上面寫錯了,應該是k=8,n=4 219.68.238.10 05/01 19:31
dinohsu1019: 抱歉:(小數版) = (整數版)/k 才對 219.68.238.10 05/02 08:54