std::srand
STD:SRAND
Defined in header | | |
---|---|---|
void srand( unsigned seed | | |
使用的伪随机数生成器种子。std::rand()
有价值seed
...
如果rand()
在调用srand()
,,,rand()
表现得好像它是被播种的srand(1)
...
每次rand()
都是一样的seed
,它必须产生相同的值序列。
srand()
不能保证线程安全。
参数
seed | - | the seed value |
---|
返回值
%280%29
注记
一般情况下,伪随机数生成器只应在调用rand()
,在节目开始的时候。它不应该被重复播种,或者每次你想要生成一批新的伪随机数时都被重新种植。
的标准做法是使用调用的结果time(0)
就像种子一样。然而,time()
返回time_t
价值,和time_t
不能保证是一个完整的类型。然而,在实践中,每个主要实现都定义了time_t
成为一个完整的类型,这也是POSIX所要求的。
例
二次
#include <cstdlib>
#include <iostream>
#include <ctime>
int main()
{
std::srand(std::time(0) //use current time as seed for random generator
int random_variable = std::rand(
std::cout << "Random value on [0 " << RAND_MAX << "]: "
<< random_variable << '\n';
}
二次
可能的产出:
二次
Random value on [0 2147483647]: 1373858591
二次
另见
rand | generates a pseudo-random number (function) |
---|---|
RAND_MAX | maximum possible value generated by std::rand (macro constant) |
reseed | reseeds the per-thread random engine (function) |
c为瑞典兰德编写的文件
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。