由个人博客搬运
leetcode的每日一题
https://leetcode-cn.com/problems/random-pick-index/solution/by-zen-mahavira15j-e5gc/
同理,题382也是这个算法
蓄水池算法原理
(这个网上搜一大堆,我记录以下自己的理解,以后忘了看起来方便)
(解决不知道到底有多少人来,但是要保证每个人的概率是一样的)
假设有好多人来抽奖,只有一个人能中
第一个人的概率:100%
第二个人的概率:50%
第三个人的概率:33%
(此时因为新来的第三个人的中将概率为33%,那么前两个人中将的概率为66%,前两个人当中第一个中将的概率又为66%*50%=33%,因此这三个人每个人的中将概率都为33%,是均分的)
第四个
…
…
…
第n个