失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 给定一个随机数生成器(0 1) 构造一个随机数生成器(0 4)

给定一个随机数生成器(0 1) 构造一个随机数生成器(0 4)

时间:2021-01-10 23:41:18

相关推荐

给定一个随机数生成器(0 1) 构造一个随机数生成器(0 4)

现给定一个随机数生成器range2(),可等概率的生成0和1,现如何构造一个随机数生成器range5(),可等概率的生成0,1,2,3,4。

目前有个有点low的想法:

因为现在已有可生成0,1的随机数生成器,任何数均可用二进制表示,用range2()等概率的生成000,001,010,011,100,101,110,111,然后将101,110,111抛弃即可,在生成5,6,7的时候继续调用range5()。

代码如下:

int range5(){if(range2())//1,代表首位{if(range2())//1,代表中间一位{return range5();}else //0,中间一位{if(range2()) //1return range5();else //0,最后一位,100return 4;}}else{//首位0if(range2())//中间一位1{if(range2())//最后1,011return 3;else //010return 2;}else{ //中间一位0if(range2()) //001return 1;else //000return 0;}}}

如有问题,欢迎指出。

如果觉得《给定一个随机数生成器(0 1) 构造一个随机数生成器(0 4)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。