C++ srand()

C++ 中的 srand() 函数用于为 rand() 函数使用的伪随机数生成器设置种子。它定义在 cstdlib 头文件中。

示例

#include<iostream>
#include<cstdlib>
using namespace std;

int main() {

// set seed to 10 srand(10);
// generate random number int random = rand(); cout << random; return 0; } // Output: 71

srand() 语法

srand() 的语法是

srand(unsigned int seed);

srand() 参数

srand() 函数接受以下参数

  • seed - 一个 unsigned int 类型的种子值

srand() 返回值

srand() 函数不返回任何值。


srand() 原型

srand() 在 cstdlib 头文件中的原型是

void srand(unsigned int seed);

在这里,srand() 参数 seedrand() 函数用作种子。


C++ srand() 的工作原理

srand() 函数设置 rand() 函数的种子。rand() 函数的默认种子是 **1**。

这意味着,如果在调用 rand() 之前没有调用 srand()rand() 函数将表现得好像它使用了 srand(1) 作为种子。

但是,如果在调用 rand() 之前调用了 srand() 函数,那么 rand() 函数将生成一个具有由 srand() 设置的种子的数字。

注意:“种子”是伪随机数序列的起始点。想了解更多信息,请访问 StackOverflow 上的此链接。


示例 1:C++ srand()

#include<iostream>
#include<cstdlib>
using namespace std;

int main() {
  int random = rand();
  
  // srand() has not been called), so seed = 1
  cout << "Seed = 1, Random number = " << random << endl;

// set seed to 5 srand(5);
// generate random number random = rand(); cout << "Seed = 5, Random number = " << random << endl; return 0; }

输出

Seed = 1, Random number = 41
Seed = 5, Random number = 54

srand() 标准实践

  1. 伪随机数生成器不应在每次生成新数字集时进行播种,即它应该 **仅在程序开始时** 播种一次,在任何调用 rand() 之前。
  2. 最好使用调用 time(0) 的结果作为种子。time() 函数返回自 **1970 年 1 月 1 日 00:00 小时 UTC** 以来的秒数(即当前 Unix 时间戳)。

    因此,种子值会随着时间而变化。所以每次我们运行程序时,都会生成一组新的随机数。

示例 2:srand() 与 time()

#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;

int main() {

// set seed to time(0) srand(time(0));
// generate random number int random = rand(); // print seed and random number cout << "Seed = " << time(0) << endl; cout << "Random number = " << random; return 0; }

输出

Seed = 1629892833
Random number = 5202
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战