概率相关面试题总结

1、随机数生成器
假设一个随机数生成器randK可以随机产生1-K之间的随机数,问如何能够构造一个randN的随机数生成器,一般来说 N<K
N<Km ,即m个randK生成器可以生成大于N个组合,则对于 n=Km/N 个组合,每个组合可以表示一个randN的生成随机数
2、随机洗牌问题
for i in range(n): swap(a[i], a[random(i,n)])
2.1 随机打乱一个数组(随机排列问题)
这里随机的在剩下的n-i个元素中选择一个元素放在i处,在每一次的选择过程中,每一个元素被选择的概率都为 1ni ,这里的概率均等是对每一轮的选择而言的。
2.2 随机抽样问题
从一个包含n个元素的数组中随机地选择m个元素
因为要满足随机性,所以应该以 mn 的概率选择每一个元素。
从而 若 k=1 ,此时随机生成 n 以内的随机数,但是要满足概率mn,从而只保留m内的数字
同样 若 k=i ,以 mini 概率选择。( ninmini=min )
2.3 高效的产生m个n范围内的不重复随机数
首先产生n个不重复数字的数组,然后随机选择其中数字的下标,输出选择得到的元素,然后将选择的结果移到数组的某位。
这种方法对空间要求挺高的。

3、蓄水池抽样问题
随机抽样问题的进阶版,主要处理情况为数据量巨大,此时N未知。
处理方法:
1-保留前m个元素
2-对于第m+i个元素,以 mm+i 的概率决定是否选择这个元素,然后在以 1m 的概率选择替换前m个位置中的第几个位置

4、带权采样问题
1-可以按照权值复制元素,然后按照普通方法处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值