投硬币

编程入门 行业动态 更新时间:2024-10-07 16:16:49

投<a href=https://www.elefans.com/category/jswz/34/1756020.html style=硬币"/>

投硬币

2010年brain teaser(脑筋急转弯)题目还在各大IT公司的面试中流行,曾经在亚马逊有位美国人问了我一道题目:给一个rand5()的函数,可以均匀产生0到5的随机数。如何得到0到7的均匀分布的随机数。也就是要用rand5()实现一个rand7()。


这个题目如果改换一个说法,相信就容易多了:给你一个硬币,如何产生0到7的随机数?

方法自然是投硬币,我们规定正面为0,反面为1,连续投3次硬币,根据正反面共有8种组合:正正正,正正反,正反正,正反反,反正正,反正反,反反正,反反反,分别对应二进制数000到111,也就是0到7。


如何用rand5()实现扔硬币的效果呢?一个简单的方法就是通过奇偶性。为了增加趣味性,我们再提高一下难度,如果这个硬币有问题,正反两面出现的概率不等,如何解决呢?

方法是,扔两次,定义顺序”正反“为1,顺序”反正“为0,如果两次都是正,或者两次都是反,就重来。


在硬币正反出现机会不等的情况下,你能想出扔硬币次数更少的,均匀生成0到7以内随机数字的方法么?

更多推荐

投硬币

本文发布于:2024-02-14 07:18:31,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1762430.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:硬币

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!