运用rand函数生成随机数,其实是我们课程设计的一道题目,嘿嘿,
#include<stdlib.h>
#include<time.h>
#include<stdio.h>
#define N 100
float freet,waitt,all[N];
struct
{
float arrivet;
float receivet;
}a[N];
void main()
{
int i,k,f,range,n,m;
int min,max;
long t;
float early;
double j;
scanf("%d",&m);
min=0;
max=28800;
range=max-min;
srand((unsigned)time(&t)); /* 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;*/
for(i=0;i<m;i++)
{
n=rand(); /*调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)
根据需要多次调用rand(),从而不间断地得到新的随机数;*/
j=((double)n/(double)RAND_MAX); /*把随机数除以RAND_MAX,从而产生一个在0到1之间的校正值;*/
n=(int)(j*(double)range); /*把校正值乘以所需要的范围值,从而产生一个在0到28800之间的值*/
n+=min; /*把该值和所要求的最小值相加,从而使该值最终落在正确的取值范围----1到28800之间。*/
a[i].arrivet=(float)n;
}
srand((unsigned)time(&t)); /* 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;*/
for(i=0;i<m;i++)
{
n=rand(); /*调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)
根据需要多次调用rand(),从而不间断地得到新的随机数;*/
j=((double)n/(double)RAND_MAX); /*把随机数除以RAND_MAX,从而产生一个在0到1之间的校正值;*/
n=(int)(j*(double)range); /*把校正值乘以所需要的范围值,从而产生一个在0到28800之间的值*/
n+=min; /*把该值和所要求的最小值相加,从而使该值最终落在正确的取值范围----1到28800之间。*/
a[i].receivet=(float)n;
}
for(i=0;i<m-1;i++)/*按大到小排序*/
{k=i;
for(f=i+1;f<m;f++)
if(a[f].arrivet<a[k].arrivet)
k=f;
if(k!=i)
{ early=a[i].arrivet;
a[i].arrivet=a[k].arrivet;
a[k].arrivet=early;
}
}
freet=a[0].arrivet; /*计算时间*/
all[0]=a[0].arrivet+a[0].receivet;
for(i=0;i<m-1;i++)
if(all[i]<a[i+1].arrivet)
{ all[i+1]=a[i+1].arrivet+a[i+1].receivet;
freet=freet+a[i+1].arrivet-all[i];}
else { all[i+1]=all[i]+a[i+1].receivet;
waitt=waitt+all[i]-a[i+1].arrivet;
}
waitt=waitt/m;
printf("The random number is:\n"); /*产生100个50—500个随机数,并且排成10行10列*/
for(i=0;i<m;i++)
{ printf("%f,%f\n ",a[i].arrivet,a[i].receivet);
if((i+1)%10==0) printf("\n");}
printf("freet=%f,waitt=%f\n",freet,waitt);
}
[注意]看雪招聘,专注安全领域的专业人才平台!