在本教程中,我们将借助示例了解 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(unsigned int seed);
参数:
srand()
函数采用以下参数:
- seed- 类型的种子值
unsigned int
返回:
srand()
函数不返回任何值。
srand() 原型
cstdlib 头文件中定义的srand()
原型为:
void srand(unsigned int seed);
这里,srand()
参数seed
被rand()
函数用作种子。
C++的工作srand()
srand()
函数设置种子rand()
函数。种子为rand()
函数是1默认。
这意味着如果在 rand()
之前没有调用 srand()
,则 rand()
函数的行为就像是使用 srand(1)
播种一样。
但是,如果在 rand 之前调用 srand()
函数,则 rand()
函数会生成一个带有由 srand()
设置的种子的数字。
注意:"seed" 是伪随机数序列的起点。要了解更多信息,请访问此链接堆栈溢出.
示例 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() 标准实践
- 伪随机数生成器不应该在每次我们生成一组新数字时播种,即它应该播种只有一次在程序开始时,在任何调用之前
rand()
. - 最好使用调用的结果
time(0)
作为种子。这time()
函数返回自以来的秒数UTC 时间 1970 年 1 月 1 日 00:00(即当前的 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
相关用法
- C++ std::max()用法及代码示例
- C++ std::string::push_back()用法及代码示例
- C++ std::less_equal用法及代码示例
- C++ set rbegin()用法及代码示例
- C++ string::length()用法及代码示例
- C++ set upper_bound()用法及代码示例
- C++ set crbegin用法及代码示例
- C++ std::is_member_object_pointer模板用法及代码示例
- C++ std::copy_n()用法及代码示例
- C++ std::string::insert()用法及代码示例
- C++ std::is_sorted_until用法及代码示例
- C++ std::iota用法及代码示例
- C++ set size用法及代码示例
- C++ std::numeric_limits::digits用法及代码示例
- C++ sscanf()用法及代码示例
- C++ std::string::data()用法及代码示例
- C++ smatch max_size()用法及代码示例
- C++ std::is_permutation用法及代码示例
- C++ strchr()用法及代码示例
- C++ set emplace用法及代码示例
注:本文由纯净天空筛选整理自 C++ srand()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。