免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8958 | 回复: 17
打印 上一主题 下一主题

[算法] 一道概率面试题(百度) [复制链接]

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-30 16:10 |只看该作者 |倒序浏览
已知一随机发生器,产生0的概率是p,产生1的概率是1-p,现在要你构造一个发生器,使得它构造0和1的概率均为1/2;构造一个发生器,使得它构造1、2、3的概率均为1/3;...,构造一个发生器,使得它构造1、2、3、...n的概率均为1/n,要求复杂度最低;

没啥思路。

论坛徽章:
0
2 [报告]
发表于 2010-08-30 16:26 |只看该作者
首先是1/2的情况,我们一次性生成两个数值,如果是00或者11丢弃,否则留下,01为1,10为0,他们的概率都是p*(1-p)是相等的,所以等概率了

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2010-08-30 16:27 |只看该作者
本帖最后由 goldenfort 于 2010-08-30 16:32 编辑

让这个发生器,  发生2 次数:

有以下可能结果 ( 0, 0) ( 0, 1)( 1,0) (1,1)

如果 产生  (0, 1) 就算为0, 如果产生 (1,0) 就算为1。  如果产生的是其它的,就放弃,重新发生。

3, 。。。。。。n 的结果, 可以类似产生

假设    p>=0.5,     以三为例子。

发生3回,  我们只取  有一回 1, 2回 0的情形。  如果 1, 发生在第一回, 算1,  发生在第2回,算 2, 第三回,算3.

4-n   可以类推。

论坛徽章:
0
4 [报告]
发表于 2010-08-30 16:30 |只看该作者
然后是1/n的情况了,我们以5为例,此时我们取x=2,因为C(2x,x)=C(4,2)=6是比5大的最小的x,此时我们就是一次性生成4位二进制,把1出现个数不是2的都丢弃,这时候剩下六个:0011,0101,0110,1001,1010,1100,取最小的5个,即丢弃1100,那么我们对于前5个分别编号1到5,这时候他们的概率都是p*p*(1-p)*(1-p)相等了

关键是找那个最小的x,使得C(2x,x)>=n这样能提升查找效率

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
5 [报告]
发表于 2010-08-30 16:33 |只看该作者
我不知道“构造一个发生器”是什么意思?

论坛徽章:
0
6 [报告]
发表于 2010-08-30 16:34 |只看该作者
就是每次调用你你都生成一个1到n之间的数值,使得你生成这些数值出现都等概率

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
7 [报告]
发表于 2010-08-30 16:37 |只看该作者
哦,就是像弄一个随机函数的样子,是吧。

论坛徽章:
0
8 [报告]
发表于 2010-08-30 16:38 |只看该作者
对,至少我是这么理解的

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2010-08-30 16:45 |只看该作者
回复 4# daybreakcx


    这种问题,等价于  有 n个球, 其中 n/2  个是白球,  n-n/2个是黑球。

要将 这n个球 排列起来, 问有几种不同的排列方式。

假设 有 k个 排列方式,  则可以用n产生出  〈=k的等概率随机发生器

论坛徽章:
0
10 [报告]
发表于 2010-08-30 17:11 |只看该作者
回复 9# goldenfort


    那只是那个公式的一个解释,我之所以取C(2x,x)是为了让同样的序列长度下可用的资源尽量多,因为C(n,i)最大是在i接近n/2的地方取得,此时我有更大比率的序列用于生成,换句话说被抛掉的更少了,这样做是为了避免大量生成了丢弃序列而使得生成速率减慢,其它的没什么特别的意思。
实际上我之所以将x取定是为了让我取得的序列生成的概率互相相等,比如C(2x,x)的概率就是[p(1-p)]^x,互等的样例空间内保证了对应的每个值取得的样例等概率

PS:我真不明白你提取球干啥………………
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP