随机数产生转换(1~5到1~7)

  1. 题目
    给定一个随机数生成器,这个生成器能均匀生成1到5(1,5)的随机数,如何使用这个生成器生成均匀分布的1到7(1,7)的数?

  2. 思路
    方法一:生成两个(1,5)的随机数,这样一共是25种情况,注意这两个数是有顺序的,从这25种情况中,取前21种,每三种代表(1,7)中的一个数字,如果取到的是这21种以外的情况,丢掉重新取。

    方法二:生成三个(1,5)的随机数,分别表示一个二进制位,其中1和2映射为0,3跳过,4和5映射为1。这样产生的三位二进制数,即1-8这8个数字都是等概率的。如果产生的是8,那么丢弃即可。

    方法三:生成两个(1,5)的随机数,产生一个两位的五进制数,5 * (random5() – 1) + random5()。这个公式能够等概率产生1-25,即第一个随机数代表:0,5,10,15,20,地位代表1,2,3,4,5。这样对这个数字(1-25的数字),采用方法一的方法,只用1-21,分7分,代表1-7,22-25这4个数字扔掉。

  3. 参考
    根据(1,5)随机数生成器,生成(1,7)之内的随机数
    [编程之美]随机数范围扩展方法总结

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 方法1 (数据类型)(最小值+Math.random()*(最大值-最小值+1)) 例: (int)(1+Math...
    GB_speak阅读 41,372评论 2 6
  • 组诗《你 我 她》 《致李小牧》 你出生在冬月 被火热又温柔的爱包围着降生 ——我真羡慕你 我是有多么爱你 就像当...
    Conn一只舟阅读 2,166评论 0 0
  • 今天有两件开心的事,一件真实,一件存在于梦中。 昨天做了个头发,顺便写了篇随笔,搞到快凌晨才完工,有点小激动,晚上...
    海薰幽兰阅读 1,337评论 0 0
  • 正文:很多时候,父母就是这样一边告诉孩子,你要懂礼貌,你要怎么怎么样,而与此同时,父母却在用另外一种完全相反...
    李向姿阅读 5,186评论 7 0
  • 21世纪之初期,互联网技术日益发展进步,人们乘网络之盛,文字交流的成本下降,纷纷在网络上发表意见,记录思想,而这细...
    宴息阅读 13,828评论 1 17

友情链接更多精彩内容