rand()函数不接受参数,默认以1为种子(即起始值)。 随机数生成器总是以相同的种子开始,所以形成的伪随机数列也相同,失去了随机意义。(但这样便于程序调试)
srand()函数就是指明种子的大小;只要种子不同,那么每次随机到的值或者固定范围的序列就不一样,达到完全随机。
代码1.给固定的种子,每次得到固定的随机值:
#include<stdio.h>
#include<stdlib.h>
int func1(int *a)
{
return (*a%)+(int)(rand()/(RAND_MAX+1.0)); } int func2(int *a,char *b)
{
int tmp1;
tmp1 = atoi(b);
return (*a%tmp1)+(int)(rand()/RAND_MAX+);
} int main(int argc,char **argv)
{
if(argc==)
{
int tmp = atoi(argv[]);
srand((unsigned int)tmp);
printf("%d\n",func1(&tmp)); }
if(argc == )
{
27 int tmp=atoi(argv[]);
srand((unsigned int)tmp);
printf("%d\n",func2(&tmp,argv[]));
}
}
代码2,达到完全的随机
#include<time.h> #include<stdlib.h> #include<stdio.h> void main() { int i,j; srand((int)time()); for(i=;i<;i++) { j=+(int)(10.0*rand()/(RAND_MAX+1.0)); printf("%d",j); } }