Rob*_*cer 2 c++ random math mersenne-twister
任何人都可以带我到某个实际上谈论支撑这两个normal_distribution和default_random_engine的数学的地方.据我所知,使用梅森捻线机?如果是这样,任何人都可以指向我的一些在线资源的方向,解释这个伪随机算法实际上如何工作,如果它是它使用的,因为我不能找到很多关于mersenne twister.此外,如果数字是统一的,大多数伪随机算法输出的是,那么normal_distribution如何使其正常分布?它可能使用逆变换,盒子研磨器或者ziggurat吗?任何帮助,我真的很感激:)
你问的问题有几个.第一个问题是生成伪随机数序列的方法,通常是整数.维基百科对Mersenne Twister(MT)以及线性同余生成器(LCG)有合理的描述,两者都执行该功能.这些旨在或多或少地在整个有效范围内均匀分布整数,并表示生成更复杂分布所需的核心功能.
可以通过从生成均匀分布的整数伪随机绘制的方法之一中提取数字来执行从其他分布生成数字.有很多方法可以做到这一点:
如果您正在寻找Mersenne Twister的C++类库的具体实现细节,您可以查看Boost源代码,它将提供有关Boost如何实现它的一些信息.AFAIK,C++ 11标准没有规定如何实现它,只说明它应该如何表现.实现由编译器开发人员完成,但如果许多更常见的编译器使用除Boost实现之外的其他东西,我会感到惊讶(更新:虽然下面的MSalters观察是特定编译器会做其他事情的原因之一).这同样适用于在升压normal_distribution类.
| 归档时间: |
|
| 查看次数: |
244 次 |
| 最近记录: |