rand()函数在C中用于生成随机数。如果我们使用rand()函数生成一个随机数序列,它将在每次程序运行时一次又一次地创建相同的序列。假设我们在循环中借助rand()在C中生成5个随机数,那么每次编译和运行程序时,我们的输出必须是相同的数字序列。
句法:

 int rand(void): 
返回0到RAND_MAX范围内的伪随机数。
RAND_MAX:是一个常数,其默认值可能会有所不同
实现之间但它被授予至少32767。
// C program to generate random numbers
#include <stdio.h>
#include <stdlib.h>
// Driver program
int main(void)
{
    // This program will create same sequence of
    // random numbers on every program run
    for(int i = 0; i<5; i++)
        printf(" %d ", rand());
    return 0;
}

注意:该程序将在每个程序运行时创建相同的随机数序列。
输出1:

453 1276 3425 89

输出2:

453 1276 3425 89

输出n:

453 1276 3425 89

srand()函数

srand()函数设置生成一系列伪随机整数的起点。如果未调用srand(),则设置rand()种子,就像在程序启动时调用srand(1)一样。种子的任何其他值都将生成器设置为不同的起始点。
句法:

void srand(unsigned seed): 
种子rand()使用的伪随机数生成器 
与价值种子。

注意:伪随机数生成器只应在对rand()的任何调用和程序的开始之前播种一次。每次希望生成一批新的伪随机数时,不应重复播种或重新播种。
标准做法是使用对srand(time(0))的调用结果作为种子。但是,time()返回time_t值,该值随时间变化,因此伪随机数随每个程序调用而变化。

// C program to generate random numbers
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
// Driver program
int main(void)
{
    // This program will create different sequence of
    // random numbers on every program run
    // Use current time as seed for random generator
    srand(time(0));
    for(int i = 0; i<5; i++)
        printf(" %d ", rand());
    return 0;
}

注意:此程序将在每个程序运行时创建不同的随机数序列。
输出1:

453 1432 325 89

输出2:

8976 21234 45 8975

输出n:

563 9873 12321 24132

srand()和rand()如何相互关联?

srand()设置rand用来生成“随机”数字的种子。如果你在第一次调用rand之前没有调用srand,就好像你已经调用了srand(1)来将种子设置为1。
简而言之,srand() - 设置种子为rand()函数

 

C / C ++中的rand()和srand()-IDC帮帮忙