命名空间
变体
操作

std::srand

来自 cppreference.cn
< cpp‎ | 数值‎ | 随机
 
 
 
 
定义于头文件 <cstdlib>
void srand( unsigned seed );

使用值 seedstd::rand() 使用的伪随机数生成器播种。

如果在任何 srand() 调用之前使用 std::rand(),则 std::rand() 的行为就像它已经用 srand(1) 播种一样。

每次 std::rand() 使用相同的 seed 播种时,它必须生成相同的值序列。

不保证 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)); // use current time as seed for random generator
    std::cout << "Random value on [0, " << RAND_MAX << "]: " << std::rand() << '\n';
}

可能的输出

Random value on [0, 2147483647]: 1373858591

[编辑] 参阅

生成伪随机数
(函数) [编辑]
std::rand 生成的最大可能值
(宏常量) [编辑]
重新播种每线程随机引擎
(函数) [编辑]
C 文档 for srand