使用 Boost 根据 Beta 分布生成随机数
我正在尝试使用 Boost 根据使用 C++ 的 beta 分布生成随机数。我在网上看到了很多根据 random.hpp 中的分布生成随机数的示例(例如
谢谢。
I am trying to use Boost to generate random numbers according to the beta distribution using C++. I have seen many examples online for generating random numbers according to distributions in random.hpp (e.g. this book). However, I cannot seen to translate them to use the beta distribution found in beta.hpp.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您首先要从 (0,1) 范围内均匀地抽取一个随机数。给定任何分布,您可以将该数字插入到分布的“分位数函数”中,结果就像从分布中抽取一个随机值一样。来自此处:
那么我们如何获得 beta 分布的分位数函数呢? beta.hpp 的文档为 此处。你应该能够使用这样的东西:
You'll first want to draw a random number uniformly from the range (0,1). Given any distribution, you can then plug that number into the distribution's "quantile function," and the result is as if a random value was drawn from the distribution. From here:
So how do we get a quantile function for a beta distribution? The documentation for beta.hpp is here. You should be able to use something like this:
根据boost的随机数库的demo
Random_demo.cpp 和 生成具有不同概率的整数
什么你应该做的是使用“variate_generator”类来绑定你的随机数生成器和分布。
一个例子可能看起来像
但是,在最近的文档 在此处输入链接描述,看来boost建议直接将生成器传递给分发对象。下面的代码的结果是相同的。
According to boost's demo for the random number library
Random_demo.cpp and Generating integers with different probabilities
What you should do is to use "variate_generator" class to bind your random number generator and distribution.
An example may look like
However, in the more recent document enter link description here, it seems that boost recommends to directly passing the generator to the distribution obejct. The result from the code below is identical.