Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Пример boost::random_device
Форум на CrossPlatform.RU > Библиотеки > boost
maxpop
Доброго времени суток!
В проекте необходимо использовать ГСЧ. Полазив в интернете нашел библиотечки boost. Недетерминированный генератор истинно случайных чисел то-что нужно. Но не понимаю как пользоваться этим классом(не очень много знаю в C++). Поэтому прошу написать какой-нить простенький примерчик, который бы выводил случайное число.
DEADHUNT
вот пример генерации 10 случайных величин ~ Exp(5)
#include <boost/random.hpp>
#include <boost/nondet_random.hpp>
#include <iostream>
#include <ctime>

int main()
{
    boost::random_device rng;
    boost::exponential_distribution<> exp_distr(5);
    boost::variate_generator<boost::random_device&, boost::exponential_distribution<> > gen(rng, exp_distr);
    for (int i = 0; i < 10; ++i)
        std::cout << gen() << std::endl;
    return 0;
}
maxpop
Спасибо.
Вы не подскажите, что я делаю не правильно? Стоит VS10. Я указываю путь то буста, все библиотеки читаются, но при компиляции вылетает вот эта ошибка:"1>LINK : fatal error LNK1104: cannot open file 'libboost_random-vc100-mt-gd-1_44.lib'". Что это вообще за файл?
maxpop
Точнее не что это за файл, почему он может не открываться?
В VC в Project->properties->vc++ directories->include directories добавил путь к бусту

фух, все запустилось) прописал путь к папке либ.
Вопрос по Вашему коду. В каком диапазоне выводятся рандомные числа? от 0 до 1?

Цитата(maxpop @ 1.3.2011, 2:23) *
Точнее не что это за файл, почему он может не открываться?
В VC в Project->properties->vc++ directories->include directories добавил путь к бусту

фух, все запустилось) прописал путь к папке либ.
Вопрос по Вашему коду. В каком диапазоне выводятся рандомные числа? от 0 до 1?


По сути мне надо выбрать движение вправо или влево. Относительно какого числа можно смотреть получившийся рандом, что бы если rnd()>x двигаться вправо, rnd()<x двигаться влево? И как вычислять это число, если менять параметр у exp(a)?
DEADHUNT
Цитата(maxpop @ 1.3.2011, 2:37) *
Вопрос по Вашему коду. В каком диапазоне выводятся рандомные числа? от 0 до 1?

согласно экспоненциальному распределению с параметром 5, т.е. функция распределения F(t) = 1 - exp(-5*t).
я не знаю какое тебе распределение нужно, посмотри документацию boost там множество разных распределений поддерживается.
скорее всего тебе равномерное распределение нужно(uniform distribution)
maxpop
Цитата(DEADHUNT @ 1.3.2011, 8:43) *
Цитата(maxpop @ 1.3.2011, 2:37) *
Вопрос по Вашему коду. В каком диапазоне выводятся рандомные числа? от 0 до 1?

согласно экспоненциальному распределению с параметром 5, т.е. функция распределения F(t) = 1 - exp(-5*t).
я не знаю какое тебе распределение нужно, посмотри документацию boost там множество разных распределений поддерживается.
скорее всего тебе равномерное распределение нужно(uniform distribution)


Спасибо. Взял uniform_int. Все работает нормально. Еще раз спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.