std::srand

< cpp‎ | numeric‎ | random
 
 
数值库
常用数学函数
数学特殊函数 (C++17)
数学常数 (C++20)
浮点环境 (C++11)
复数
数值数组
伪随机数生成
编译时有理数算术 (C++11)
数值算法
(C++17)
(C++17)
插值
(C++20)
(C++20)
通用数值运算
(C++11)
位操作
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
 
 
定义于头文件 <cstdlib>
void srand( unsigned seed );

以值 seed 播种 std::rand() 所用的随机数生成器。

若在任何到 srand() 的调用前使用 rand() ,则 rand() 表现为如同它被以 srand(1) 播种。

每次以同一 seed 播种 rand() 时,它必须产生相同的值数列。

srand() 不保证为线程安全。

参数

seed - 种子值

返回值

(无)

注意

通常来说,应该只播种一次随机数生成器,在程序开始出,任何到 rand() 的调用前。不应重复播种,或每次冀愿生成新一批随机数时重播种。

标准实践是使用以 time(0) 为种子调用的结果。然而 time() 返回 time_t 值,而不保证 time_t 是整数类型。尽管实践中,主流实现都定义 time_t 为整数类型,且此亦为 POSIX 所要求。

示例

#include <cstdlib>
#include <iostream>
#include <ctime>
 
int main() 
{
    std::srand(std::time(0)); // 以当前时间为随机数生成器的种子
    int random_variable = std::rand();
    std::cout << "Random value on [0 " << RAND_MAX << "]: " 
              << random_variable << '\n';
}

可能的输出:

Random value on [0 2147483647]: 1373858591

参阅

生成伪随机数
(函数)
std::rand 生成的最大可能值
(宏常量)
重播种单个线程的随机引擎
(函数)