可以用自定义函数解决这个问题:
def choice(v, n, p){
cump = removeTail!([0.0].join(cumsum(p\p.sum())), 1)
return v[cump.asof(rand(1.0, n))]
}
a=[1, 2, 3, 4]
n=100000
p=[0.1, 0.1, 0.3, 0.5]
r = choice(a, n, p)
在1.30.19\2.00.7版本以后,可以调用函数randDiscrete
randDiscrete(1 2 3 4, [0.1, 0.1, 0.3, 0.3], 100)
输出为: