gpt4 book ai didi

c++ - 从 Boost Pareto 分布中随机生成的数字

转载 作者:行者123 更新时间:2023-11-30 05:45:57 25 4
gpt4 key购买 nike

所以在问这个问题之前,我做了很多关于堆栈溢出和谷歌的调查。我有一个正在进行的模拟,需要能够生成 0 到 1.0 之间的随机输入数据,这些数据遵循特定的统计分布。

到目前为止,我已经得到了正常工作的正态分布和均匀实数分布,但仍坚持帕累托分布。

前两个在 boost/random/中可用,但 pareto 仅可作为原始分布使用(即不可用于变量生成器)。有谁知道生成所述随机数的方法?请注意,我已经倾注了 boost 文档,包括 Pareto 分布。我希望生成遵循帕累托分布的随机数,使用帕累托分布来确定统计概率.到目前为止,我唯一能想到的是使用统一生成器并将这些值插入帕累托分布的 CDF(但必须有比这更好的方法)。

任何帮助将不胜感激,因为我是 boost 的新手。

谢谢!

这是我用于前两个的代码,与变体生成器一起使用。这都是非常多的测试代码,所以请不要在风格或约定上敲打我:

#include <time.h>
#include <iostream>
#include <boost/random/normal_distribution.hpp>
#include <boost/random/uniform_real_distribution.hpp>
#include <boost/math/distributions/pareto.hpp>
#include <boost/random/mersenne_twister.hpp>
#include <boost/random/variate_generator.hpp>

int main(){
boost::mt19937 randGen(time(0));

boost::normal_distribution<> dist1(.5,.2);
boost::random::uniform_real_distribution<> dist2(0.0,1.0);

boost::variate_generator<boost::mt19937&,boost::normal_distribution<> > generator1(randGen,dist1);
boost::variate_generator<boost::mt19937&,boost::random::uniform_real_distribution<> > generator2(randGen,dist2);

for(int x = 0; x < 10; x++)
std::cout << generator1() << std::endl;

std::cout << "\n\n\n";

for(int x = 0; x < 10; x++)
std::cout << generator2() << std::endl;

return 0;
}

最佳答案

The pareto distribution is related to the exponential distribution.因此,您可以使用 boost 生成遵循指数分布的随机值,并从中手动计算帕累托分布值。 This question您可能也会感兴趣。

关于c++ - 从 Boost Pareto 分布中随机生成的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29155783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com