Так что я довольно много смотрю вокруг переполнения стека и google, прежде чем задавать этот вопрос. У меня есть симуляция, над которой я работаю, и мне нужно иметь возможность генерировать случайные входные данные между 0 и 1.0, которые следуют определенным статистическим распределениям.Случайно сгенерированные числа из Boost Pareto Distribution
До сих пор я получил нормальное распределение и равномерное реальное распределение, работающее должным образом, но застрял с распределением Парето.
Первые два доступны в boost/random /, но парето доступно только как необработанное распределение (т. Е. Недоступно для использования в генераторе колебаний). Кто-нибудь знает способ генерации указанных случайных чисел? Пожалуйста, обратите внимание, что я уже вылил дополнительную документацию, в том числе для распространения Pareto. Я ищу для генерации случайных чисел, которые следуют дистрибутивный Парето, не использовать распределение Парето для определения статистической вероятности. Единственное, о чем я могу думать до сих пор, - использовать равномерный генератор и подключить эти значения к CDF дистрибутива Парето (но должен быть лучший способ, чем этот).
Любая помощь будет принята с благодарностью, поскольку я новичок в повышении.
Спасибо!
Вот код, который я использую для первых двух, в тандеме с генератором вариантов. Это все очень тестовый код, поэтому, пожалуйста, не забивай меня по стилю или конвенции:
#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;
}
Но почему-то вы пропустили первый хит для распространения «boost pareto»? http://www.boost.org/doc/libs/1_41_0/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/pareto.html –
Совсем нет. Это не отвечает на мой вопрос.Вот как использовать распределение Парето для определения вероятностей в соответствии с распределением. Мне нужно генерировать случайные числа, которые следуют за распределением Парето в качестве входных данных образца. Пожалуйста, найдите время, чтобы понять суть вопроса, прежде чем переходить к выводам. –
@TylerS, возможно, вы не смогли установить соединение, и комментатор этого не понял. Я тоже, я читал это как «Я не могу найти реализацию распределения Парето». В общем, легко упредить ответы, которые вы ожидаете, указав на это в своем вопросе. («Я знаю, что boost реализует статистическое распределение здесь, но я не уверен, как я могу применить это (если вообще) к генераторам Boost Random») – sehe