国际访客建议访问 Primers 编程伙伴 国际版站点 > C 教程 > rand 以获得更好的体验。

# C 语言标准库函数 rand

在头文件 stdlib.h 中定义。
非线程安全
/*********************************************
 * @brief 获取一个伪随机数
 * @return 伪随机数
 ********************************************/
int rand(void);

!subtitle:说明

获取一个伪随机数,取值范围在 0 到 RAND_MAX 之间(包含 0 和 RAND_MAX)。

可以使用 srand 函数设置随机数生成器的种子值。

如果没有手动设置随机数种子的情况下调用 rand,则相当于调用 srand(1) 设置了种子。

!subtitle:参数

!subtitle:返回值

一个伪随机数

# 示例

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

int main(void)
{
    srand((unsigned)time(NULL));  // 将当前时间戳设为随机数种子

    printf("随机数范围为:[0, %d]\n", RAND_MAX);

    for (int i = 0; i < 10; i+=1)
    {
        printf("%d) => %d\n", i+1, rand()); // 生成随机数
    }
    
    return 0;
}

说明:

通过 srand 函数将随机数种子设为当前时间的时间戳,从而保证每次运行获取的伪随机数都不同。

注意,随机数种子设置一次即可,不要重复调用 srand 函数设置随机数种子。

运行结果:

user@host:~ $ gcc main.c
user@host:~ $ ./a.out
随机数范围为:[0, 2147483647]
1) => 112615760
2) => 384218256
3) => 725367797
4) => 192703376
5) => 1860125593
6) => 287435394
7) => 1849213638
8) => 1062397142
9) => 440999220
10) => 1919356074
user@host:~ $ ./a.out
随机数范围为:[0, 2147483647]
1) => 1954498907
2) => 1271144734
3) => 299683373
4) => 878223986
5) => 1718266450
6) => 759593288
7) => 474584470
8) => 1695693233
9) => 21062603
10) => 2098130517
user@host:~ $ ./a.out
随机数范围为:[0, 2147483647]
1) => 1954498907
2) => 1271144734
3) => 299683373
4) => 878223986
5) => 1718266450
6) => 759593288
7) => 474584470
8) => 1695693233
9) => 21062603
10) => 2098130517

# 推荐阅读

# 参考标准

  • C17 standard (ISO/IEC 9899:2018):

    • 7.22.2.1 The rand function (p: 252)

  • C11 standard (ISO/IEC 9899:2011):

    • 7.22.2.1 The rand function (p: 346)

  • C99 standard (ISO/IEC 9899:1999):

    • 7.20.2.1 The rand function (p: 312)

  • C89/C90 standard (ISO/IEC 9899:1990):

    • 4.10.2.1 The rand function

本文 更新于: 2025-11-27 09:38:09 创建于: 2025-11-27 09:38:09