Chinaunix首页 | 论坛 | 博客
  • 博客访问: 42646
  • 博文数量: 4
  • 博客积分: 110
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-02 10:01
文章分类
文章存档

2012年(4)

我的朋友

分类: C/C++

2012-10-29 18:56:53

今天在逛CU的时候,发现了一个很有意思的,这个帖子的楼主问了一个问题:有个函数foo,返回0的概率是60%,返回1的概率是40%,让你自己写一个函数,使返回0和1的概率是50%,用前面说的foo函数实现,不能用像c++里面的rand这类的函数,怎么解?

有个人说的方法很不错:因为生成0-1的概率和生成1-0的概率是一样的(不算1-1,0-0),那么把0-1->1,1-0->0,这样就能使生成0和1的概率都为50%。但后来有人说这个算法不收敛,我也不知道为什么不收敛,反正上课闲的无聊,就想了另一个方法:既然foo函数生成0的概率为60%,生成1的概率为40%,那么我先来生成N个随机数,用a[N]保存,此时数组a中0占60%,1占40%(N足够大),然后我把60%中的10%由0变成1,这样0和1就各占50%。

我也不知道这个方法到底对不对,若有哪个大牛发现其中有不对的地方,请指教。


阅读(2827) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

Bean_lee2012-10-31 15:23:06

概率论里面有一个相反的场景,比如网球选手A和B,A得分的概率是51,B得分的概率是49,如何设计比赛规则,使A赢的概率是90%。或者分析现有的规则

blacksapper2012-10-30 23:41:33

我觉得你的方法可行。