从S中抽取首k项放入「水塘」中
对于每一个S[j]项(j ≥ k):
随机产生一个范围从0到j的整数r
若 r < k 则把水塘中的第r项换成S[j]项
用枚举数组S{1,2,3}来帮助理解:
当遍历到S[1]时,概率为1,只有一个数那肯定不存在均等的概念
S[2]时,有两个数,那么使用随机函数(这里假定是rand,根据自己语言确定),rand(1)[表示在0-1随机取],如果取到0则保留当前值S[2],概率是1/2(rand(0))概率。如果取不到则保留原答案,由1.可知之前值只有S[1],且概率为1,则此时取S[1]的概率为1 X 1/2。这是的S[1],S[2]的概率均等,都为1/2
从S中抽取首k项放入「水塘」中
对于每一个S[j]项(j ≥ k):
随机产生一个范围从0到j的整数r
若 r < k 则把水塘中的第r项换成S[j]项
用枚举数组S{1,2,3}来帮助理解:
当遍历到S[1]时,概率为1,只有一个数那肯定不存在均等的概念
S[2]时,有两个数,那么使用随机函数(这里假定是rand,根据自己语言确定),rand(1)[表示在0-1随机取],如果取到0则保留当前值S[2],概率是1/2(rand(0))概率。如果取不到则保留原答案,由1.可知之前值只有S[1],且概率为1,则此时取S[1]的概率为1 X 1/2。这是的S[1],S[2]的概率均等,都为1/2