首页 > 代码库 > 算法题--rand5产生rand7
算法题--rand5产生rand7
由一个随机数产生另外一个随机数,最关键的问题是,如何实现等概率映射?
下面是我的rand5产生rand7的实现:
主要思路是将rand5映射到rand(5~30),然后抛去多余的几个,将剩下的21个数每三个映射到1~7之间得数。
1 #include <iostream> 2 #include <string> 3 #include <memory.h> 4 #include <vector> 5 #include <sstream> 6 #include <math.h> 7 #include <climits> 8 #include <algorithm> 9 #include <cstdlib>10 using namespace std;11 12 int generate_5()13 {14 return 1+rand()%5;15 }16 17 int generate_7()18 {19 int tmp = 30;20 while(tmp > 26)21 {22 tmp = (5*generate_5()+generate_5());23 }24 return (tmp-3)/3;25 }26 27 int main()28 {29 int cnt = 0;30 while(cnt < 70)31 {32 cout<<generate_7()<<endl;33 ++cnt;34 }35 return 0;36 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。