生成随机数需要调用两个函数:srand(srandom)和rand(random)。rand和random的区别就是返回类型不同,int和long int(虽然在普通的32位机上效果是一样的)。srand是种子发生器,保证每次得到的数据都是不同的。给个例子:
1 #include <stdlib.h> 2 #include <stdio.h> 3 #include <time.h> 4 5 int main() 6 { 7 int rnumber[100] = {0}; 8 srand(1); //这里写不写都行,因为种子为一个确定值,所产生的随机数一直都是确定的。就好比只使用了rand() 9 int i; 10 for(i=0;i<10;i++) 11 { 12 rnumber[i] = rand() % 100; //得到100以内的数 13 printf("随机数:%d ",rnumber[i]); 14 } 15 }
执行了好多次的结果都为:
随机数:83 随机数:86 随机数:77 随机数:15 随机数:93 随机数:35 随机数:86 随机数:92 随机数:49 随机数:21
我们把srand(1)修改为:
srand((int) time(0));
结果发现每次运行都会产生不同的10个随机数。这就是上面所说的srand函数为了防止随机数每次重复,常常使用系统时间来初始化,即使用 time 函数来获得系统时间来作为随机数的种子。