C++问题,急急急急急急

来源:百度知道 编辑:UC知道 时间:2024/07/07 04:06:35
#include<time.h>
#include<stdlib.h>
#include<stdio.h>
main()
{
int i,j;
void srand(unsigned int seed);
srand((int)time(0));
for(i=0;i<10;i++)
{ j=1+(int)(90.0*rand()/(RAND_MAX+10.0));
printf("%d ",j);
}
}
为什么输出的随机数中第一个数总是不变啊??

#include<time.h>
#include<stdlib.h>
#include<stdio.h>
main()
{
int i,j;
void srand(unsigned int seed);
srand((int)time(0));
int t=1+(int)(90.0*rand()/(RAND_MAX+10.0)); //外面加个不就可以去掉第一了
for(i=0;i<9;i++)
{ j=1+(int)(90.0*rand()/(RAND_MAX+10.0));
printf("%d ",j);
}
}

这段代码没有问题,重复运行第一个数应该是会变化的。

#include<time.h>
#include<stdlib.h>
#include<stdio.h>
main()
{
int i,j;
void srand(unsigned int seed);
srand((int)time(0));
int t=1+(int)(90.0*rand()/(RAND_MAX+10.0));
printf("%d",t);
for(i=0;i<9;i++)
{ j=1+(int)(90.0*rand()/(RAND_MAX+10.0));
printf("%d ",j);
}
}

因为你除的数很大,又对其进行了强制转化。很短时间内,种子函数的起点几乎不变,除的结果几乎没差别。

你可以注释掉///(RAND_MAX+10.0));试试看:

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