问个题 weighted random sampling# JobHunting - 待字闺中
j*n
1 楼
1个array里面每个数对应1个weight,比如[1,2,3]的 weigh
t 分别是[10,20,30], 叫你从[1,2,3]里面按照weight产生1
个随机数, 比如这里面,产生3的概率是产生1的概率的3倍。
简单的做法就是把这些weight加起来,从[10,20,30]变成[10,30
,60],然后产生1个从[0,60]的uniform随机数,看这个数是在哪个区间,
[0,10],[10,30]还是[30,60] 就知道应该返回1,2,3中间哪
个了。
问题是有没有做法可以不需要执行这个sum的过程,因为如果array很大很大,
这种sum很可能就overflow了。
t 分别是[10,20,30], 叫你从[1,2,3]里面按照weight产生1
个随机数, 比如这里面,产生3的概率是产生1的概率的3倍。
简单的做法就是把这些weight加起来,从[10,20,30]变成[10,30
,60],然后产生1个从[0,60]的uniform随机数,看这个数是在哪个区间,
[0,10],[10,30]还是[30,60] 就知道应该返回1,2,3中间哪
个了。
问题是有没有做法可以不需要执行这个sum的过程,因为如果array很大很大,
这种sum很可能就overflow了。