我正在尝试使用 boost 来生成 long double 的随机数(在 64 位机器上)。
在某些时候我使用
rng = boost::mt19937();
然而,编译器认为在 boost/random/mersenne_twister.hpp 的第 88 行,
x[i] = (1812433253UL * (x[i-1] ^ (x[i-1] >> (w-2))) + i) & mask;
有一个隐式转换将 64 位缩短为 32 位值...
我什至没有指定我想要一个长的双打还是双打……他为什么要争论这个?是因为我使用的是 64 位操作系统吗?
这个问题有什么简单的解决方案吗?我需要一个长的双发电机... xD
谢谢