百度一随即概率面试题

chl7862 2009-09-10 02:02:01
最近一个同学去百度面试遇到一道题:
一随机数以概率 p 生成0,以概率(1-p)生成1,怎样生成等概率的 0 和 1 ?
...全文
558 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nanji5188 2009-09-11
  • 打赏
  • 举报
回复

N1:表示产生0的次数,N2表示产生1的次数

N1*P = N2*(1-P)
N1:N2=(1-P):P


WizardOz 2009-09-11
  • 打赏
  • 举报
回复
设你的随机数函数是 YOUR_RAND()

r = YOUR_RAND();

tmp = /roll 1-10000

if (tmp / 10000.0 > p)
r = !r;
applerockhool 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 eijikayn 的回复:]
p = 0.5
[/Quote]

ibaits 2009-09-10
  • 打赏
  • 举报
回复
这涉及到概率 分布的内容了,其实也简单只要能找到一个概率为1/2p的函数就解决了.

另外还有一个比较方便的实现:
一随机数f(x)以概率 p 生成0,
那么设g(x)=f(x)>0?0:1; 刚g(x)以概率 1-p 生成0.
所以f(x),g(x)同时生成0的概率为p(1-p)等于同时生成1的概率.
得等概率随机数
function g(x){
int v=f(x)+g(x);
if(v==0){
return 0; //1.f(x)g(x)同时为0
else if(v==2){
return 1; //2.f(x)g(x)同时为1
}else{
g(x); //3.f(x)g(x)一个为0一个为1,重新生成随机数
}
}

上面第3步的概率为p^2+(1-p)^2
dirdirdir3 2009-09-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 eijikayn 的回复:]
p = 0.5
[/Quote]
.
eijikayn 2009-09-10
  • 打赏
  • 举报
回复
p = 0.5
wuyu637 2009-09-10
  • 打赏
  • 举报
回复
p*(1-p) = (1-p)*p

682

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧