【发布时间】:2023-02-24 02:16:05
【问题描述】:
我想在 C++ 中生成一堆随机字节。为此,我使用
#include <climits>
#include <functional>
#include <random>
#include <vector>
#include <iostream>
using random_bytes_engine = std::independent_bits_engine<
std::default_random_engine, CHAR_BIT, unsigned char>;
int main()
{
random_bytes_engine rbe;
std::vector<unsigned char> data(10);
std::generate(begin(data), end(data), std::ref(rbe));
for(int b: data) {
std::cout << b << ", ";
}
std::cout << std::endl;
}
166, 240, 216, 41, 129, 199, 215, 253, 66, 76,
好的。现在,我想确保我得到不同的每次运行程序时的值,即,我想从某个地方播种 independent_bits_engine。
有什么提示吗?解决方案必须是跨平台的。 (independent_bits_engine 以外的便携式解决方案也可以。)
【问题讨论】:
-
除非这在密码学上是敏感的,否则通常使用真正的 random_device 或当前时间戳作为初始种子。
-
@MaartenBodewes 没看过。关联?
标签: c++ random random-seed