c++, boost::random: генерация случайных данных с равномерным распределёнием

216
06 сентября 2018, 18:30

Приветствует, стоит задача на некотором действительном отрезке (условно от 0.0 до limit) случайно сгенерировать N точек, при этом точки должны быть распределены равномерно.

Сначала написал свой код, с использованием rand(), то поскольку точек много (около 100 миллионов), а rand() ограничен пределом в 2^16 значений и генерировать действительные числа проблематично, решил воспользоваться разработками умных людей и использовать boost::random.

В результате получился следующий код (активно использовал примеры):

#include <ctime>
#include <boost/random/linear_congruential.hpp>
#include <boost/random/uniform_real.hpp>
#include <boost/random/variate_generator.hpp>
#include <boost/generator_iterator.hpp>
    typedef boost::minstd_rand base_generator_type;
    base_generator_type generator((unsigned int)time(NULL));
    boost::uniform_real<> uni_dist(0.0, myDataLimit);
    boost::variate_generator<base_generator_type&, boost::uniform_real<> > uni(generator, uni_dist);
    for (int index = 0; index < myDataSize; index++)
    {
        myData[index] = uni();
    }

У меня вопросы

1) всё ли корректно сделано? Проверил данные - вроде как равномерно распределены, но всё таки.

2) уж очень брутальный код, возможно ли как-то более красиво это сделать, что-то типа

boost::mysuper_linear_random(myData, myData + myDataSize, 0, limit);
Answer 1

Еще поизучал вопрос - C++11 решает кучу проблем

#include <ctime>
#include <random>
//    std::mt19937 gen((unsigned int)time(0));
std::random_device genSource;
std::uniform_real_distribution<> generator(0.0, myDataLimit);
for (int index = 0; index < myDataSize; index++)
{
    myData[index] = generator(genSource);
}
std::sort(myData, myData + myDataSize);

тот же boost, только встроенный и не такие навороченные конструкции писать надо

READ ALSO
Как выделить память для массива функций

Как выделить память для массива функций

Вот так ругается компиляторКак можно реализовать такой динамический массив?

209
Хранение множества продуктов

Хранение множества продуктов

У меня есть база данных и 3 таблицы: ProductEntity, OrderEntity и ProductInOrder

174
Как настроить в .properties log4j путь к логам внутри проекта?

Как настроить в .properties log4j путь к логам внутри проекта?

Друзья, здравствуйте, Подскажите как настроить вproperties log4j путь к логам внутри проекта? То есть что бы после пула с гита путь был всегда октуален

211