C语言基本随机数生成

示例

该函数rand()可用于在0和RAND_MAX(0和RAND_MAX包括)之间生成伪随机整数值。

srand(int)用于种子伪随机数生成器。每次rand()使用相同的种子进行播种时,都必须产生相同的值序列。调用前只能播种一次rand()。每次要生成新一批伪随机数时,都不应重复播种或重新播种。

标准做法是将结果time(NULL)用作种子。如果您的随机数生成器要求具有确定性的序列,则可以在每次程序启动时为生成器提供相同的值。发行代码通常不需要这样做,但是在调试运行中使错误可重现非常有用。

建议始终为生成器添加种子,如果未添加种子,则其行为似乎与一起使用srand(1)。

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

int main(void) {
    int i;
    srand(time(NULL));
    i = rand();

    printf("Random value between [0, %d]: %d\n", RAND_MAX, i);
    return 0;
}

可能的输出:

Random value between [0, 2147483647]: 823321433

笔记:

C标准不保证所产生随机序列的质量。过去,的某些实现rand()在生成数字的分布和随机性方面存在严重问题。的使用rand(),不建议进行认真随机数生成需求,如密码。