srand()函数用来设置算法的种子,time(NULL)返回当前的时间,先调用srand(time(NULL))是把当前的时间作为种子,是程序每次运行产生不同的随机数序列。
涉及到三个概念:
1、随机数:数学上产生的都是伪随机数,真正的随机数使用物理方法产生的。
2、随机数种子:随机数的产生是由算术规则产生的,srand(seed)的随机数种子不同,rand()的随机数值就不同,倘若每次的随机数种子一样,则rand()的值就一样。所以要产生随机数,则srand(seed)的随机数种子必须也要随机的。
3、用srand()产生随机数种子
原型:void srand ( unsigned int seed )。作用是设置好随机数种子,为了让随机数种子是随机的,通常用time(NULL)的值来当seed。
扩展资料:
C语言其他产生随机数的方法。
1、函数名: rand
功能: 随机数发生器
用法: void rand(void);
程序例:
2、函数名: random
功能: 随机数发生器
用法: int random(int num);
程序例:
3、函数名: randomize
功能: 初始化随机数发生器
用法: void randomize(void);
程序例:
参考资料来源:百度百科--srand
使用时,参数可以是unsigned型的任意数据,比如srand(10);
如果不使用srand
用rand()产生的随机数,在多次运行,结果是一样的。
这个是种子函数 为rand函数提供不同的种子 每次运行程序产生不同的随机数
不然rand函数每次运行程序产生的随机数都是一样的
#include <stdio.h>
#include <stdlib.h>//srand()、rand()
#include <time.h>//time();
#include <conio.h>
#define N 50
int main()
{
int n;
srand((unsigned)time(NULL));//设置随机数种子
while (1)
{
n = (rand() % 10) + 1 ;//产生1~10的随机数
//rand()产生的是一个很大的数,对其求余就可以达到限定范围的目的
printf("%d ", n);
getch();
}
return 0;
}
设置rand()随机序列种子。
对于给定的种子seed, rand()会反复产生特定的随机序列。
srand( time(NULL) );
for( i = 0; i < 10; i++ )
printf( "Random number #%d: %d\n", i, rand() );