srand
|
定义于头文件
<stdlib.h>
|
||
|
void
srand
(
unsigned
seed
)
;
|
||
为
rand()
函数使用的伪随机数生成器设置种子值
seed
。
如果在调用
srand()
之前使用了
rand()
,
rand()
的行为将如同通过
srand
(
1
)
进行初始化。
每次使用相同的
seed
初始化
rand()
时,它必须生成相同的数值序列。
srand()
不保证是线程安全的。
目录 |
参数
| seed | - | 种子值 |
返回值
(无)
注释
通常来说,伪随机数生成器只应在程序开始阶段、首次调用
rand()
之前进行一次性种子初始化。
不应重复初始化种子,也不应在每次生成新批次伪随机数时重新设置种子。
标准做法是使用对
time
(
0
)
的调用结果作为种子值。
但需注意,
time()
返回的是
time_t
类型的值,而
time_t
并不保证是整型。
不过在实际应用中,所有主流实现都将
time_t
定义为整型,这也是POSIX标准所要求的。
示例
可能的输出:
Random value on [0 2147483647]: 1373858591
参考文献
- C17 标准 (ISO/IEC 9899:2018):
-
- 7.22.2.2 srand 函数 (页码: 252-253)
- C11 标准 (ISO/IEC 9899:2011):
-
- 7.22.2.2 srand 函数 (p: 346-347)
- C99标准(ISO/IEC 9899:1999):
-
- 7.20.2.2 srand函数(页码:312-313)
- C89/C90 标准 (ISO/IEC 9899:1990):
-
- 4.10.2.2 srand 函数
参考
|
生成伪随机数
(函数) |
|
|
rand
(
)
可生成的最大可能值
(宏常量) |
|
|
C++ 文档
关于
srand
|
|