怎么用C++语言编一个电脑随机输出1,2或3的程序呢

来源:百度知道 编辑:UC知道 时间:2024/05/25 02:16:04
不行啊
为什么我用FOR循环输出十五个数是一样的啊
答复不对呀
谁来帮我

#include<stdlib.h>
#include<time.h>
#include<stdio.h>

void main()
{
int i,k,range,n,a[100];
int min,max,flag=0;
long t;
double j;

min=0;
max=3;
range=max-min;
srand((unsigned)time(&t)); /* 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;*/
do{ for(i=0;i<100;i++)
{ n=rand(); /*调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)
根据需要多次调用rand(),从而不间断地得到新的随机数;*/
j=((double)n/(double)RAND_MAX); /*把随机数除以RAND_MAX,从而产生一个在0到1之间的校正值;*/
n=(int)(j*(double)range); /*把校正值乘以所需要的范围值(即500-50)从而产生一个在0到43之间的值*/
n+=min; /*把该值和所要求的最小值相加,从而使该值最终落在正确的取值范围----1到44之间。*/
a[i]=n;
}

for(i=0;i<99;i++) /* 判断这100个数是否重复,如果是,再生成一次,直到各不相同为止,也可以不要这段,呵呵*/
{ for(k=i+1;k<100;k++)
if(a[i]==a[k]) flag=1;flag=0;}

}while(flag);
printf("The random number is:\n"); /*产生100个50—500个随机数,并且排成10行10列*/
for(i=0;i<100