srand
函数 <cstdlib>
void srand (unsigned int seed);
初始化随机数生成器
使用作为种子(seed )传递的参数进行初始化的伪随机数生成器。
对于srand调用中使用的每个不同种子(seed )值,可以预期伪随机数生成器将在随后的rand调用中生成不同的连续结果。
使用相同种子的两个不同初始化将在随后的rand调用中生成相同的连续结果。
如果seed设置为1,生成器将被重新初始化为它的初始值,并生成与调用
rand或srand之前相同的值。
为了生成类随机数,srand通常被初始化为一些独特的运行时值,
比如函数
time返回的值
(在头文件<
ctime>中声明)。这足以满足大多数琐碎的随机需求。
☲ 参数
seed
一个整数值,用作伪随机数生成器算法的种子。
☉ 返回值
无
☣ 示例
/* srand example */
#include <stdio.h> /* printf, NULL */
#include <stdlib.h> /* srand, rand */
#include <time.h> /* time */
int main ()
{
printf ("First number: %d\n", rand()%100);
srand (time(NULL));
printf ("Random number: %d\n", rand()%100);
srand (1);
printf ("Again the first number: %d\n", rand()%100);
return 0;
}
|
可能的输出:
First number: 41
Random number: 13
Again the first number: 41
↭ 数据竞争
该函数访问和修改内部状态对象,这可能会导致
rand或srand的并发调用发生数据竞争。
一些库提供了一个替代函数,显式地避免了这种数据竞争:rand_r(不可移植)。
c++库实现允许保证调用该函数时不存在数据竞争。
❆ 异常(c++)
无抛出保证:此函数从不抛出异常。
🍄 另请参阅