如何根据离散分布采样?

请问dolphin有根据一个离散分布采样的函数吗? 比如对数组 a = [1, 2, 3, 4]按照 p = [0.1, 0.1, 0.3, 0.5] 采样100个数据。

在python中:np.random.choice(a=[1, 2, 3, 4], size=100, p=[0.1, 0.1, 0.3, 0.5])

请先 登录 后评论

1 个回答

Shena Mao

可以用自定义函数解决这个问题:

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)

输出为:

attachments-2022-06-OCyjcLTm62a69fd3739fe.png

请先 登录 后评论
  • 1 关注
  • 0 收藏,922 浏览
  • ricecake 提出于 2022-06-13 10:08