C++ 如何在同一个时间点用同一个函数返回不同的随机数据?
时间: 2024-10-22 13:21:16 浏览: 24
输入一个正整数,判断是不是素数(C++)
在C++中,为了在一个时间点从同一个函数返回不同的随机数,可以利用种子值初始化随机数生成器的不同实例。每个独立的随机数生成器(通常使用`std::default_random_engine`或`std::mt19937`)会基于其种子值生成不同的序列。每次调用随机函数之前,你可以设置不同的种子值,从而得到不同的随机数。
例如,可以这样做:
```cpp
#include <random>
// 创建一个全局的随机引擎并设定初始种子(如当前时间)
std::default_random_engine generator(std::chrono::system_clock::now().time_since_epoch().count());
// 定义一个返回随机整数的函数,接受种子作为输入
int getRandom(int seed) {
std::default_random_engine rng(seed); // 使用新的种子创建一个新的随机引擎
return std::uniform_int_distribution<int>(0, 100)(rng); // 生成0到100之间的随机数
}
// 调用函数,每次传入不同的种子以获取不同的结果
int random1 = getRandom(1234);
int random2 = getRandom(5678);
```
每当你调用`getRandom()`并传入不同的种子,函数内部就会返回不同的随机数。注意,如果你想要更频繁地更换种子而保持一致性,不应该每次都依赖当前系统时间,因为这可能会导致短时间内生成相同的序列。你可以选择一个固定的偏移量或者使用一个线性增加的数值作为种子。
阅读全文