首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

等概率发作0和1(延伸)

2012-11-06 
等概率产生0和1(延伸)1.有一个随机数发生器,能以概率p生成0,以概率1-p生成1,问如何做一个随机数发生器 使

等概率产生0和1(延伸)
1.有一个随机数发生器,能以概率p生成0,以概率1-p生成1,问如何做一个随机数发生器 
使得生成0和1的概率相等。 
2.用上面那个生成0和1的概率相等的随机数发生器,怎样做一个随机数发生器使得它生成 

的数在1...N之间均匀分布。 


 第一题比较简单,可以用原发生器周期性地产生2个数,直到生成01或者10。 
由于生成01和10的概率均为p(1-p),故预先任意指定01为0(或1),10为1(或0)即可。即可等概率的产生0和1,但然,要考虑其他组合的不可用性,获取题目本身就隐含了这个bug或是缺陷吧。 

int newRand(){int result = 0;for(int i = 0 ; i < k ; ++i){if(Rand() == 1)result |= (1<<i);}if(result > n)return newRand();return result;}


热点排行