Я занимаюсь симуляцией программы транспортной сети. Я хочу смоделировать прибытие пассажиров на автобусную станцию, у которой есть распределение яда скорости ямбы.
На самом деле, в моей концепции программы мне нужны два списка дат прибытия: первый считается ожидаемыми датами прибытия пассажиров, а второй — реальным эффективным прибытием пассажиров.
Для генерации времени прибытия я использовал следующий код с использованием boost:
<blink>
double lambda(Lambda1); //mean of Poisson distr
boost::mt19937 rnd_gen; //Mersenne Twister generator
typedef boost::variate_generator<
boost::mt19937, boost::poisson_distribution<>
> rnd_poisson_t;
rnd_poisson_t rnd_poisson( rnd_gen,
boost::poisson_distribution<>( lambda ) );
rnd_poisson = rnd_poisson_t( rnd_gen,
boost::poisson_distribution<>( lambda ));for(int i = 0; i <size;i++)
{
value=rnd_poisson();
tab[i]= rnd_poisson();
i++;
}
</blink>
Проблема в том, что если я использую этот код для разных списков, чтобы сгенерировать даты прибытия для одной и той же лямбды и того же размера, то всегда будут генерироваться одинаковые числа.
Как мне создать определенный вариант в этом поколении, чтобы два сгенерированных списка были немного разными?
Перезапустите генератор случайных чисел с текущим временем, когда вы его используете. В большинстве случаев это приведет к другой последовательности. Как вы узнали:
rnd_gen(static_cast<unsigned int>(std::time(0)));
Других решений пока нет …