面试题之概率统计

条件概率:事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为P(A|B)=P(AB)/P(B)。
随机数:面试题中一般假设有了一个随机生成器,自然数n%M是“均匀”的,且具有一定的随机性,但是密码学中一般不采用,因为其是可预测的。 

关于独立:用定义来证明,P(AB)=P(A)*P(B) 


【例题1】:假设一个随机数发生器rand7均匀产生1到7之间的随机整数,如何构造rand10,均匀产生1-10之间的随机整数? 
【分析】:关键在于,扔掉不想要的数,同时要保证“等概率”,必须保证“均匀,才能扔掉,比如:rand2()+rand2()-1并不是均匀的1-3,范围是一致的,1和3的概率是0.25,2的概率是0.5。 
【法1】:(较差方法)1-7之间有三个偶数,四个奇数,扔掉一个奇数,那么这三个偶数和三个奇数之间是同等概率产生,可构成一个0-1整数的均匀产生器。用它产生四个bit(二进制),对应整数为0-15,然后保留1-10即可。 
【法2】:(较好方法)使用七进制:首先把1-7减去1,变成0-6。产生一个两位的七进制数,对应0-48,把40-48扔掉(因为这只有9个数),其余安装个位数字分类,0-9对应我们要的1-10.


【例题2】一个随机发生器,不均匀,以概率p产生0,以(1-p)产生1,(0<p<1),构造一个均匀的随机发生器(算法导论) 

【分析】产生两次,(0,1)的概率和(1,0)的概率都相同,为p*(1-p)。 


【例题3】水库采样流入若干个对象(整数),事先不知道个数,如何随机取出k个(k小于总数)? 

【分析】用一个数值a保存k个数a[0...k-1],对于第i个元素,若i<=k;则a[i-1]存放这个元素,否则:产生随机数x=rand()%i,这里若x<k,则用a[x]存放这个元素,替换掉之前的元素。
【扩展】 - k=1的特殊性 -一个若干行大文件,随机选择一行(产生随机数) -一个不知道长度的链表,随机选择一个或多个元素 -带权采样


【例题4】给定n种元素,在给定n个权值,按权值比例随机抽样一个元素,假设权值都是整数。 

【法1】复制若干份,每个元素复制权值那么多份,用例5的方法水库采用,例:3个a,2个b,6个c,变为aaa,bb,ccccccc。优点是可以使用已有的方法,缺点是需要自己复制。 
【法2】每个元素按照权值对于一个区间,同上,a对于[0-2],b对应[3-4],c对应[5-10],随机产生一个[0-10]的随机数,二分查找最后对应的元素是哪个。优点:省空间,缺点:需要二分查找。 
【法3】假设有m种元素,(1)先按1/m的概率随机选择一种元素,(2)再产生随机数根据权值决定能否选择这种元素,若能选取它并结束,否则返回(1)。 关于第(2)步的概率,Pi = a/b - 产生随机数%b,看是否小于a -或者产生[1...b]的随机数,看是否小于等于a -或者产生[0...b-1]的随机数,看是否小于a


【参考】:http://www.julyedu.com/video/play/id/35

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值