#C 语言标准库函数 rand
/*********************************************
* @brief 获取一个伪随机数
* @return 伪随机数
********************************************/
int rand(void);
说明
获取一个伪随机数,取值范围在 0 到 RAND_MAX
之间(包含 0 和 RAND_MAX
)。
可以使用 srand 函数设置随机数生成器的种子值。
如果没有手动设置随机数种子的情况下调用 rand
,则相当于调用 srand(1)
设置了种子。
参数
无
返回值
一个伪随机数
#示例
#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) => 1919356074user@host:~ $ ./a.out随机数范围为:[0, 2147483647] 1) => 1954498907 2) => 1271144734 3) => 299683373 4) => 878223986 5) => 1718266450 6) => 759593288 7) => 474584470 8) => 1695693233 9) => 21062603 10) => 2098130517user@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