yahoo 函数返回某种概率的0,1

题目:一个函数foo可以返回概率为3:2的0,1,现要求写一个fun2,要求返回等概率的0,1

看到百度有个面试题是这样说的

有一个函数fun能返回0和1两个值,返回0和1的概率都是1/2,问怎么利用这个函数得到另一个函数fun2,使fun2也只能返回0和1,且返回0的概率为1/4,返回1的概率为3/4。(如果返回0的概率为0.3而返回1的概率为0.7呢)
在网上看到有同学的回答,写的很好http://www.haogongju.net/art/1665092

解法思想:

0,1随机生成,可以理解成2进制
a = fun() * 2^4 + fun() * 2^3 + fun() * 2^2 + fun() * 2^1 + fun() 等概率生成0-31的所有数
去掉30和31之后,在0-29之间进行一个%3 输出

其实就是分配这30个数使得一个占3份一个占7份,按照那个同学的算法:30个数中,对3取模,为0的有10个,非0的20个,这样比例是1:2,还差一点,应该是9:21化简后是3:7,所以模为0需要给对方一个,索性把0归到对方,可以产生3:7.

返回1:3相对更简单了,就弄四个值0-3,为0的返回0,1,2,3都返回1就可以了。这种方法比较直接。

 

回到我们的问题中,0,1此处foo中返回的概率不等,如何求解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值