【转】 已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10...
转自:http://blog.csdn.net/furturerock/article/details/6850634
1 int rand7() 2 { 3 return rand()%7+1; 4 } 5 6 int rand10() 7 { 8 int x=0; 9 do 10 { 11 x=(rand7()-1)*7+rand7(); 12 } 13 while(x>40); 14 return x%10+1; 15 }
分析:要保证rand10()在整数1-10的均匀分布,可以构造一个1-10*n的均匀分布的随机整数区间(n为任何正整数)。假设x是这个1-10*n区间上的一个随机整数,那么x%10+1就是均匀分布在1-10区间上的整数。由于(rand7()-1)*7+rand7()可以构造出均匀分布在1-49的随机数(原因见下面的说明),可以将41~49这样的随机数剔除掉,得到的数1-40仍然是均匀分布在1-40的,这是因为每个数都可以看成一个独立事件。
下面说明为什么(rand7()-1)*7+rand7()可以构造出均匀分布在1-49的随机数:
首先rand7()-1得到一个离散整数集合{0,1,2,3,4,5,6},其中每个整数的出现概率都是1/7。那么(rand7()-1)*7得到一个离散整数集合A={0,7,14,21,28,35,42},其中每个整数的出现概率也都是1/7。而rand7()得到的集合B={1,2,3,4,5,6,7}中每个整数出现的概率也是1/7。显然集合A和B中任何两个元素组合可以与1-49之间的一个整数一一对应,也就是说1-49之间的任何一个数,可以唯一确定A和B中两个元素的一种组合方式,反过来也成立。由于A和B中元素可以看成是独立事件,根据独立事件的概率公式P(AB)=P(A)P(B),得到每个组合的概率是1/7*1/7=1/49。因此(rand7()-1)*7+rand7()生成的整数均匀分布在1-49之间,每个数的概率都是1/49。
ps:用while(x>40)而不用while(x>10)呢?原因是如果用while(x>10)则有40/49的概率需要循环while,很有可能死循环了。
转载于:https://www.cnblogs.com/AnXiaoXi/archive/2013/04/09/3010695.html
【转】 已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10...相关推荐
- java xml 节点路径,SelectSingleNode使用XPath为已知良好的xml节点路径返回null
回答(9) 2 years ago 我强烈怀疑问题与名称空间有关 . 尝试摆脱名称空间,你会没事的 - 但显然这对你的实际情况没有帮助,我认为这个文件是固定的 . 我不记得如何在XPath表达式中指定 ...
- C语言编程>第十三周 ⑧ 已知学生的记录由学号和学习成绩组成,M名学生的数据已存入stu结构体数组中。请编写函数fun,该函数的功能是:
例题:已知学生的记录由学号和学习成绩组成,M名学生的数据已存入stu结构体数组中.请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分).已给出函数的首部, ...
- java 取整_javascript 解决默认取整的坑(目前已知的最佳解决方案)
javascript 解决默认取整的坑(目前已知的最佳解决方案) 复现该问题 js在数字操作时总会取更高精度的结果,例如1234/10结果就是123.4,但是在c或者java中整数除以10的结果还是整 ...
- 已知坐标求方位角_由方位角高度角求赤经赤纬
接天体方位角和高度角的计算 - 且听风吟的文章 - 知乎 ,已知观测者的位置(地理坐标(b,l)),天体的位置也已知(赤道坐标(α,δ)),可以计算在某一给定时间(utc(y-m-d,h:m:s))天 ...
- python 判断数据类型,是否与已知相同
1. 判断数据类型type(x) x = torch.randint(1,2,[2,2]) print(type(x)) <class 'torch.Tensor'> 2.判断是否与已知一 ...
- 已知空间中的三点 求三角形面积_【气宇轩昂】解三角形最值问题的四大模型尤其是第四种模型,简直不要太赞哦!!!...
点击上方蓝色字体"高中数学王晖"关注王晖老师,免费获取各种知识干货和学习经验~~~您的点赞转发是对老师的最大鼓舞~~~ 距高考还有262天 1 三角函数有界性 在三角函数中,正弦函 ...
- C语言编程b a化简,C语言编程,已知三角形的三边长a,b,c,计算求三角... 如果三角形三边长 a,b,c,满足( )那么这个三角形......
导航:网站首页 > C语言编程,已知三角形的三边长a,b,c,计算求三角... 如果三角形三边长 a,b,c,满足( )那么这个三角形... C语言编程,已知三角形的三边长a,b,c,计算求三角 ...
- 概率p输出1,概率1-p输出0,等概率输出0和1 【LeetCode】470. rand7()构造rand10() 系列变形(新浪、字节面试题)
目录 1. 等概率输出0和1 1.1 题目描述 1.2 解题思路 & 代码 2. 以 1/N 的概率返回 1~N 之间的数 3. 给定函数rand5() 构造rand7() 或 rand7() ...
- (转载)由1-7的随机整数函数构造1-10随机整数函数
题目: 已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10. 分析:要保证rand10()在整数1-10的均匀分布,可以构造一个1-10*n ...
最新文章
- 作为数据科学家,我都有哪些弱点
- ipa 打包遇到的坑
- sqlserver 替换字符串中的数字_VBA实用小程序60: 替换图表SERIES公式中的字符串...
- 和push的区别_还没有理解let 和 const的用法和区别吗,几百字让你立马搞懂
- 建筑与计算机技术,建筑设计中常用的计算机技术与注意点
- 我写的不只是小说更是程序人生
- NumPy Cookbook 带注释源码 五、NumPy 音频和图像处理
- 关于图像高速缩放算法,目前看到的最好的最清晰的一篇文章2
- Linux源码编译即黑客帝国屏保cmatrix安装
- JavaScript 页面跳转、页面重定向
- matlab 电流平均值,电流平均值谐波检测方法MATLAB仿真
- 汽车电子行业入门指南「主要国内新能源车销量」
- 今天16:00 | 中科院计算所研究员孙晓明老师带大家走进量子的世界
- 产品周报第26期|富文本编辑器新增预览功能;博客首页增加上次阅读频道记录……
- java实现美图秀秀的照片拼接功能(照片数量任意)
- 每晚泡脚15分钟,5年下来有哪些变化
- 火星超大nasa开源全景图分享
- F矩阵的自由度是多少?
- 【MATLAB】线性规划问题中碰到绝对值的情况
- Spring Boot缓存实战 EhCache