我正在寻找一组可移植的分发版本,用于标准C++11引擎,如`std::mt19937' (请参见http://en.cppreference.com/w/cpp/numeric/random)。
引擎实现表现一致(即在不同平台上生成相同的序列 - 在Clang和MSVC下进行了测试),但是似乎在不同平台上实现了不同的分布。
因此,即使引擎产生相同的序列,也似乎分布(例如,std::normal_distribution<double>
)在不同平台上使用不同数量的样本(即产生不同的结果),这在我的情况下是不可接受的。
也许有第三方库遵循C++11随机模板,但可以在流行的平台上提供一致的值吗(查看GCC、MSVC和Clang / llvm的支持)。
到目前为止,我看过的选项有:
- Boost.random(有点重,但值得,因为它与c++11对应物相当匹配)
- 克隆自libstd++ (也值得,可能是可移植的,但提取特定函数可能不简单)
- 创建自己的类似于C++11的随机分布
我需要均匀、正常、泊松和瑞利。