您的位置:首页 > 其它

算法导论习题5.1-2

2011-02-12 16:11 204 查看
#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;

int random(int a , int b)
{
int p,m=1; //m用来保存2^p
for(p=0 ; m-1<b-a ; p++) //p是二进制位数
{
m *= 2; //再用m保存十进制的值
}

m = rand()%2;

for(int i=0 ; i<p-1 ; i++)
{
m = m*2+rand()%2;
}

if(m > b-a)
{
return random(a , b);
}
else
{
return m+a;
}
}
int main()
{
int a,b;
cin >> a >>b;//输入3和7
srand(time (0) );
int m;
int three , four , five ,
six , seven;//这几个变量用来统计3,4,5,6,7出现次数
three = four = five =
six = seven=0;
for(int i=0 ; i<1000 ; i++)
{
m = random(a , b);
cout << m << endl;
switch(m)
{
case 3:
three++;break;
case 4:
four++;break;
case 5:
five++;break;
case 6:
six++;break;
case 7:
seven++;
default:break;
}
}
cout << three << ' ' << four
<< ' ' << five << ' ' << six << ' ' <<seven;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: