面试题-随机生成数
来源:互联网 发布:2017淘宝双十二红包 编辑:程序博客网 时间:2024/05/29 19:42
题目1:已知rand7()可以产生1~7的7个数(均匀概率),利用rand7() 产 生 rand10() 1~10(均匀概率)。
解答:
产生指定范围内的随机数就要求指定范围内每个数的产生概率都是相等的。
由于无法直接通过rand7()产生1-10的数,所以就要思考如何组合rand7()生成1~10n之间的数。
为了讨论方便,更符合我们平时使用的习惯,我们将rand7() - 1,就表示生成的是0~6之间的随机数。
i = rand7() - 1, j = rand7() - 1
那么7 * i + j 就可以看出一个7进制的数范围为00~66(转换为十进制就是0~48),而且这些7进制数的产生概率都是一样的,每个数都是1/48,所以我们取0~39的这40个数,它们的概率也是相同的。余10加1就实现了rand10()。
int rand10() { int i = rand7() - 1; int j = rand7() - 1; int num = 7 * i + j; if(num >= 40) return rand10(); else return num % 10 + 1;}
0 0
- 面试题-随机生成数
- C++程序员面试题 函数 生成随机密码 (二)
- 九章算法面试题16 01随机生成函数
- 随机生成试题
- 随机生成数
- 数独随机生成
- 随机生成十个数
- 随机生成十个数
- 随机生成十个数
- 随机生成一个数
- MFC_随机生成数
- 随机生成数
- 随机生成数
- 生成随机唯一数
- 经典随机抽样面试题
- 面试题 随机输出扑克
- 面试题78:随机抽奖
- 面试题:回文数
- 基于R做相关分析
- 【Python系列3】两个txt文件通过id进行关联
- UVa 140:Bandwidth(暴力)
- C++ #include<string> 和 using std::string
- hdu4901The Romantic Hero dp
- 面试题-随机生成数
- 063 接口的调用及方法的重写
- HDU 5033 Building (2014年北京赛区网络赛B题)
- JAVA基础笔记之五 表达式5-4.6==0.4的值是什么?
- 分享《学习linux几点忠告》
- Word Break
- 2014编程之美资格赛题目2 : 大神与三位小伙伴(2014-04-12)
- 开发日志整理<序>(5/2013-至今)
- Java ----类加载器(自己写)