投資組合為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