我正在使用mt19937来从给定的种子生成随机字符串,如下所示:
std::string StringUtils::randstring(size_t length, uint64_t seed) {
static auto& chrs = "abcdefghijklmnopqrstuvwxyz";
thread_local static std::mt19937 rg(seed);
thread_local static std::uniform_int_distribution<std::string::size_type> pick(0, sizeof(chrs) - 2);
std::string s;
s.reserve(length);
while(length--) {
s += chrs[pick(rg)];
}
return s;
}
我希望确保在同一架构的不同机器上生成的随机数序列(因此生成的随机字符串)相同,根据这个问题的答案,这应该是可能的。
然而,当我重新构建二进制文件(没有更改任何依赖项或库),对于相同的种子,与使用相同种子从先前构建生成的序列相比,随机数序列会发生变化。
我如何在同一机器架构+映像中的不同二进制文件上生成给定种子的保证随机数序列(x86_64 Linux)?