投资组合为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