C ++:TR1 vs GSL vs Boost统计分布?

时间:2009-07-12 07:15:33

标签: c++ random

在我的previous帖子中,我问的是如何在正态分布后生成数字。

由于我还要生成其他发行版,并且我看到3个库可能会提供它们(GSL,TechnicalReport1(doc link?),Boost),我想知道你会选择哪一个。< / p>

作为旁注:我的应用程序的参考平台是GNU / Linux系统,性能是一个问题。

4 个答案:

答案 0 :(得分:4)

以Boost为例,它非常受欢迎,专为C ++而设计。

GSL是一个非常好的库,它提供了远远落后于发行版的工具,但它被GPL(不是LGPL)所涵盖,这意味着如果你想开发非GPL应用程序并分发它们,你就不能。

答案 1 :(得分:3)

以下是有关random number generation using C++ TR1入门的一些注意事项。

答案 2 :(得分:2)

梅森捻线机提供均匀分布的数字。有两种常见的方法可以从中生成正态分布的数字:

  1. Box-Muller transform

  2. Ziggurat method

  3. 根据我的经验,Ziggurat在Java中的速度提高了2倍,因为它比Box-Muller更少地调用慢速日志/ exp函数。我不知道它在C ++中是怎么回事。

答案 3 :(得分:1)

Boost很不错,因为它是跨平台的。但老实说,如果你只是需要数字不是加密安全的,那么任何一个库中的mersenne twister都会非常快。如果它是一个瓶颈,只需做一些测试,找出最快的。