std::srand

来自cppreference.com
< cpp‎ | numeric‎ | random
 
 
 
 
在标头 <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 生成的最大可能值
(宏常量)
重播种单个线程的随机引擎
(函数)