std::srand
来自cppreference.com
<tbody>
</tbody>
| 在标头 <cstdlib> 定义
|
||
void srand( unsigned seed ); |
||
以值 seed 播种 std::rand() 所用的随机数生成器。
若在对 srand() 的任何调用前使用了 std::rand(),则 std::rand() 表现为如同它被以 srand(1) 播种。
每次以同一 seed 播种 std::rand() 时,它必须产生相同的值数列。
srand() 不保证为线程安全。
参数
| seed | - | 种子值 |
返回值
(无)
注解
通常来说,应该只播种一次随机数生成器,在程序开始时,对 rand() 的任何调用前进行。
不应重复播种,或每次冀愿生成新一批随机数时进行重播种。
标准实践是使用调用 std::time(0) 的结果为种子。
然而 std::time 返回的是 std::time_t 值,而 std::time_t 不保证是整数类型。
不过,实践中各主要实现都把 std::time_t 定义为整数类型,且此亦为 POSIX 所要求。
示例
运行此代码
#include <cstdlib>
#include <ctime>
#include <iostream>
int main()
{
std::srand(std::time(0)); // 以当前时间为随机数生成器的种子
std::cout << "[0, " << RAND_MAX << "] 上的随机数值: " << std::rand() << '\n';
}
可能的输出:
[0, 2147483647] 上的随机数值: 1373858591
参阅
| 生成伪随机数 (函数) | |
| std::rand 生成的最大可能值 (宏常量) | |
| 重播种单个线程的随机引擎 (函数) | |
srand 的 C 文档
| |