C++:生成高斯分布
我想知道 C++ 标准库中是否有任何高斯分布数字生成器,或者是否有任何代码片段要传递。
提前致谢。
I would like to know if in C++ standard libraries there is any gaussian distribution number generator, or if you have any code snippet to pass.
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
标准库没有。 然而,Boost.Random 确实如此。 如果我是你我就会用它。
The standard library does not. Boost.Random does, however. I'd use that if I were you.
C++ 技术报告 1 添加了对随机数生成的支持。 因此,如果您使用的是相对较新的编译器(Visual C++ 2008 GCC 4.3),那么它很可能是开箱即用的。
有关
std::tr1::normal_distribution
的示例用法,请参阅此处(还有很多)。C++ Technical Report 1 adds support for random number generation. So if you're using a relatively recent compiler (visual c++ 2008 GCC 4.3), chances are that it is available out of the box.
See here for sample usage of
std::tr1::normal_distribution
(and many more).GNU 科学图书馆有这个功能。 GSL - 高斯分布
The GNU Scientific Libraries has this feature. GSL - Gaussian Distribution
这个问题的答案随着 C++11 的变化而变化,它具有 随机标头其中包括 std::normal_distribution。 Walter Brown 的论文N3551,C++11 中的随机数生成 可能是对该库的更好介绍之一。
以下代码演示了如何使用此标头(实时查看):
我提供在我对 C++ 随机浮点数生成 的回答中,有一组更通用的 C++11 随机数生成示例Boost 中的示例以及使用
rand()
。The answer to this question changes with C++11 which has the random header which includes std::normal_distribution. Walter Brown's paper N3551, Random Number Generation in C++11 is probably one of the better introductions to this library.
The following code demonstrates how to use this header (see it live):
I provide a more general set of examples to random number generation in C++11 in my answer to C++ random float number generation with an example in Boost and using
rand()
as well.