生成随机数, random 5, random 7
来源:互联网 发布:看图识番号软件下载 编辑:程序博客网 时间:2024/06/05 16:07
给定一个范围是1到5的随机整数生成器,设计一个范围是1到7的随机整数生成器。
解法:
int rand7(){ int vals[5][5] = { { 1, 2, 3, 4, 5 }, { 6, 7, 1, 2, 3 }, { 4, 5, 6, 7, 1 }, { 2, 3, 4, 5, 6 }, { 7, 0, 0, 0, 0 } }; int result = 0; while (result == 0) { int i = rand5(); int j = rand5(); result = vals[i-1][j-1]; } return result;}
很容易可以看出,只要rand5()是均匀的随机数,那么rand7()就是均匀的随机数。
但是在最坏情况下,rand7()可能会永远不停的循环下去。事实上,本题不存在常数时间的解法。
把上面的代码简化之后就可以得到下面的代码:
int i;do{ i = 5 * (rand5() - 1) + rand5(); // i is now uniformly random between 1 and 25} while(i > 21);// i is now uniformly random between 1 and 21return i % 7 + 1; // result is now uniformly random between 1 and 7
0 0
- 生成随机数, random 5, random 7
- random生成随机数
- Python random 生成随机数
- Random生成随机数
- Random()生成随机数
- Java 随机数生成 Random
- Android:Random生成随机数
- 随机数生成_srand/random
- 随机数生成工具random
- python random 生成随机数
- 随机数生成Math.random()
- Python -- random 随机数生成
- 生成随机数Random()
- Random生成随机数
- 利用/dev/random生成随机数
- random生成随机数的错误
- 使用/dev/random生成随机数
- 使用Random类生成随机数
- Android Universal Image Loader 源码分析
- 几种常用HTML5移动应用框架的比较
- rapid-generator
- (hdu step 3.1.2)骨牌铺方格(简单递推:求用2*1的骨牌铺满2*n的网格的方案数)
- 加速Web开发的9款知名HTML5框架
- 生成随机数, random 5, random 7
- 利用Python对二进制数据进行按位处理
- 10个超棒的界面设计工具
- MyEclipse2014安装包下载地址、破解文件及破解方法
- 11 个超棒的移动Web应用开发解决方案
- c++ 、java 、 oc 对象模型比较(干货)
- BST && TREAP 实现简单排序
- AutoLayout
- HTML5移动前端框架:Junior