rand5()生成rand7()
来源:互联网 发布:talk是什么软件 编辑:程序博客网 时间:2024/05/22 14:20
找工作,工作,作,任重而道远。
看到面筋里面这道题,刚开始是没有任何思路的,后来我就习惯了。
原始思路:利用rand5()扩展成一个更长的区间,然后映射到7的长度上面。
想啊想啊,终于还是看了别人的扩展长度的代码
pr7=5*(rand5()-1)+rand5();这个真的很急很关键。
知道映射到一个均匀的长区间以后,于是想这个区间是1-25(设生成数为y),数据是均匀分布的(这点很重要)
于是想啊缩放到7这个区间,好几种方式。
第一种----- 1,2,3映射到1...一次类推。
while(1){ if(pr7>21) pr7=5*(rand5()-1)+rand5(); else{ return (pr7-1)/3+1;}
第二种-----7,14,21映射为1...一次类推。
while(1){ if(pr7>21) pr7=5*(rand5()-1)+rand5(); else{ return pr7%7+1;}}第三种------遇到7以上的不反回,厉害了
while(1){ if(pr7>7) pr7=5*(rand5()-1)+rand5(); else{ return pr7;}}综合一下代码:
#include<iostream>#include<stdlib.h>using namespace std;int rand5(){return 1+rand()%5;}int rand7(){int pr7=1456;while(1){ if(pr7>7) pr7=5*(rand5()-1)+rand5(); else{ return pr7;}}}int main(){int a,i=70000;int p[7]={0};//while(i){ a=rand7();//p[a-1]++;//i--;//}//for(int j=0;j<7;j++) 测试生成的数据的分布 // cout<<p[j]<<"\t"; return 0;}测试了一下,数据是均匀分布的。
阅读全文
0 0
- rand5()生成rand7()
- 两个rand5生成rand7
- 使用rand5()生成rand7()
- rand5()生成rand7()
- rand5()生成rand7()
- rand5 rand7
- 面试时遇到由rand5生成rand7
- 给定一个rand5的随机数,生成rand7的随机数
- 利用rand5构造rand7
- rand5()构造rand7()
- rand5()构造rand7()
- 给定RAND5,写出RAND7
- rand5产生rand7
- 算法--rand5()产生rand7()
- rand5()产生rand7()
- Rand5() to Rand7()
- rand5()产生rand7() 方法总结
- Moderate rand5()产生rand7() @CareerCup
- 25匹马问题
- 复杂链表的复制
- iOS中的蓝牙开发
- 7 采集分页列表+ajax延时设置
- JAVA互联网架构之Spring学习其一配置bean及工厂
- rand5()生成rand7()
- P1147 连续自然数和
- swift model 解析的两种方法
- 常用组件
- [自制操作系统] 原子操作&核间中断&读写锁&PRWLock
- iOS Navigation Bar 导航栏折腾记 (Swift&OC)
- linux指令学习笔记
- AUTOSAR DATABASE ARXML 与 VECTOR DATABASE FILE对比
- linux下安装redis