rand()
函数是 C++ 标准库中的一个函数,用于生成伪随机数。然而,rand()
函数本身并不提供直接重置其内部状态的方法。如果你想要重置 rand()
函数生成的随机数序列,可以通过以下几种方法实现:
srand()
srand()
函数用于设置 rand()
函数的种子。通过为 srand()
提供相同的种子值,可以使得每次程序运行时 rand()
生成的随机数序列相同,从而达到“重置”的效果。
#include <cstdlib>
#include <ctime>
int main() {
// 使用当前时间作为种子
srand(static_cast<unsigned int>(time(nullptr)));
// 生成一些随机数
for (int i = 0; i < 10; ++i) {
std::cout << rand() % 100 << " ";
}
std::cout << std::endl;
// 重置随机数序列
srand(static_cast<unsigned int>(time(nullptr)));
// 再次生成一些随机数
for (int i = 0; i < 10; ++i) {
std::cout << rand() % 100 << " ";
}
std::cout << std::endl;
return 0;
}
<random>
库C++11 引入了 <random>
库,提供了更强大和灵活的随机数生成功能。通过使用 <random>
库中的随机数生成器,可以更容易地控制随机数序列的重置。
#include <iostream>
#include <random>
#include <chrono>
int main() {
// 使用当前时间作为种子创建随机数生成器
std::mt19937 generator(static_cast<unsigned int>(std::chrono::system_clock::now().time_since_epoch().count()));
// 生成一些随机数
for (int i = 0; i < 10; ++i) {
std::cout << generator() % 100 << " ";
}
std::cout << std::endl;
// 重置随机数生成器(重新设置种子)
generator.seed(static_cast<unsigned int>(std::chrono::system_clock::now().time_since_epoch().count()));
// 再次生成一些随机数
for (int i = 0; i < 10; ++i) {
std::cout << generator() % 100 << " ";
}
std::cout << std::endl;
return 0;
}
通过上述方法,你可以有效地重置 rand()
函数生成的随机数序列,以满足不同的需求。
领取专属 10元无门槛券
手把手带您无忧上云