美文网首页
随机数产生转换(1~5到1~7)

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

作者: reeuq | 来源:发表于2018-08-07 14:50 被阅读0次
  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)之内的随机数
    [编程之美]随机数范围扩展方法总结

相关文章

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

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

  • 今日头条面试题:生成随机数(根据rand5()生成rand7()

    题目描述 给你一个能生成1到5随机数的函数,用它写一个函数生成1到7的随机数。 (即,使用函数rand5()来实现...

  • 17/12/19 选择结构

    if*元算符: &&, ||, !*if-else: 产生随机数:Math.random() 表示0到1的随机数。...

  • 系统随机数产生方法

    1、通过系统环境变量($RANDOM)产生随机数 2、通过openssl产生随机数 3、通过时间获得随机数(dat...

  • Java基础语法_Day04

    一、Random 产生整数随机数 Random的使用步骤我们想产生1~100(包含1和100)的随机数该怎么办呢?...

  • Java语言中的随机数方法

    Java语言中的随机数方法 1、Math.random() 方法: 产生的随机数时 0~1 之间的 double,...

  • Flink将数据写入到hdfs中

    1. 场景 随机产生数据然后将产生的数据写入到hdfs 中。 2. 随机数据源 代码: 3. hdfssink 需...

  • 喵神swifter学习笔记

    1、随机数 不需要随机数种子 arc4random()%N + begin:产生begin~begin+N的随机数...

  • BitSet

    题目: 有1千万个随机数,随机数的范围在1到1亿之间。现在要求写出一种算法,将1到1亿之间没有在随机数中的数求出来...

  • 临床统计学学习日志

    1.随机:SAS产生随机数,指定seed可产生相应一系列随机数(同软件版本可重现)按分组比例如A:B=1:2,随机...

网友评论

      本文标题:随机数产生转换(1~5到1~7)

      本文链接:https://www.haomeiwen.com/subject/atfavftx.html