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)之内的随机数
    [编程之美]随机数范围扩展方法总结

转载于:https://www.cnblogs.com/pangxiaodong/archive/2011/10/21/2220582.html

随机数产生转换-根据(1,5)随机数生成器,生成(1,7)之内的随机数相关推荐

  1. java中生成1000~10000之间的随机数

    要生成在[min,max]之间的随机整数,可使用Random类进行相关运算: Random random = new Random(); int s = random.nextInt(max)%(ma ...

  2. 给你一个能生成1到5随机数的函数,用它写一个函数生成1到7的随机数

    给你一个能生成1到5随机数的函数,用它写一个函数生成1到7的随机数 文章目录 给你一个能生成1到5随机数的函数,用它写一个函数生成1到7的随机数 一.问题 二.分析 三.错解 四.正解一 五.正解二 ...

  3. Vb生成一定范围内的随机数(含小数部分)

    下面这个函数,可以生成一定范围内的随机数,可以指定小数位数. 比如 RndBetween (10, 99, 2) 返回 [10.00~99.00] 范围内的随机数. Function RndBetwe ...

  4. python生成一个含有20个随机数的列表_python随机模块22个函数详解(上)

    作者:小伍哥 来源: AI入门学习 今天给大家纤细介绍下python中的随机模块,随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性.平时数据分析各种分 ...

  5. C/C++ 中生成特定范围内的随机数

    大家在写 C/C++ 程序时,难免会遇到要求获取某个范围内的随机数,我查阅了一些资料后,总结如下.本文分两部分,先介绍 C 语言中与随机数相关的两个函数 srand 和 rand,后介绍 C++ 中的 ...

  6. Java黑皮书课后题第7章:*7.13(随机数选择器)编写一个方法,返回1到54之间的随机数,但不能是传递到实参中的数。指定如下方法头

    7.13(随机数选择器)编写一个方法,返回1到54之间的随机数,但不能是传递到实参中的数.指定如下方法头 题目 题目描述 可变长参数列表 破题 代码 运行实例 题目 题目描述 7.13(随机数选择器) ...

  7. python从random生成列表_详解Python利用random生成一个列表内的随机数

    详解Python利用random生成一个列表内的随机数 首先,需要导入random模块: import random 随机取1-33之间的1个随机数,可能重复: random.choice(range ...

  8. JS生成x到y的随机数

    /** Math.random()* - 可以用来生成一个0-1之间的随机数* - 生成一个0-10的随机数* - 生成一个0-x之间的随机数* Math.round(Math.random()*x) ...

  9. html生成1-32位随机数,如何生成一个32位的随机数 | 求索阁

    CStringA CreateHex(int max) { CStringA precision; precision.Format("%x",max); int size = p ...

  10. C++生成指定范围内的随机数

    代码 rand()% 3 : 3就是范围,代表生成[0,3)之间的随机数 int main(){for (int i = 0; i < 20; i++) {switch (rand() % 3) ...

最新文章

  1. boost::mp11::mp_nth_element相关用法的测试程序
  2. 基于百度地图js进行地理定位
  3. 一些应该记住的东西(持续更新?再也不会更新了)
  4. [MySQL] mysql 的行级显式锁定和悲观锁
  5. jupyter notebook运行的快捷键_AI Studio-Notebook基础使用教程(一)
  6. ERROR 1130 (HY000): Host ‘192.168.3.238‘ is not allowed to connect to this MySQL server
  7. 计算理财产品收益的JS代码
  8. MINIS FORUM U820黑苹果安装教程
  9. 程序员因工资低拒绝offer,HR:估计你一辈子就是个程序员
  10. “代理服务器出现问题,或者地址有误”解决方案
  11. 30天数据分析与机器学习实践之Day16——Python文本数据分析:新闻分类任务
  12. HDU 5761 Rower Bo 物理题(积分求时间)
  13. android百度日语输入法下载,百度日文输入法
  14. 宝塔安装包下载linux版本,宝塔linux面板下载
  15. 目标检测网络(RCNN系列,SSD,Yolo系列)
  16. 栈的应用之中缀表达式转后缀
  17. SAP总账模块的基本功能
  18. 京东比价教程之 圈X-QuantumultX购物软件比价
  19. 极品飞车ol服务器维护,极品飞车ONLINE-官方网站-腾讯游戏
  20. 可信时间戳如何生成?可信时间戳技术原理

热门文章

  1. 使用winx dvd ripper转换视频,如何获得高质量的视频?
  2. 《Programming in Lua 3》读书笔记(九)
  3. BeyondCompare This license key has been revoked:
  4. www计算机会议影响力
  5. 【linux】16进制格式查看命令hexdump
  6. flume 整合kafka
  7. Wordpress 错误ERROR: Cookies are blocked or not supported by your browser.
  8. Asp.net MVC4 下二级联动
  9. PopTip View
  10. MVC中的service controller 有状态,无状态Bean线程安全