Привет, у меня есть симуляция, в которой я работаю, в которой я легко получаю случайные числа из равномерного и нормального распределений:
#include <iostream>
#include "MersenneTwister.h"using namespace std;
int main()
{
MTRand mtrand1;
double r1,r2;
r1 = mtrand.rand(); // from a uninform dist.
r2 = mtrand1.randNorm(); //from a normal dist.
}
Я хотел бы использовать этот генератор случайных чисел для получения случайного числа из распределения Пуассона со средним значением «A».
Любая идея о том, как реализовать эту процедуру, используя код MersseneTwister?
код можно найти здесь:
https://gcc.gnu.org/bugzilla/attachment.cgi?id=11960. и это широко используется.
Вы можете использовать стандартную библиотеку
#include<random>
double mean = 3.1415926;
std::mt19937 mt{std::random_device{}()};
std::poisson_distribution<> pd{mean};
auto n = pd(mt); // get a number
Обратите внимание, что посев с std::random_device
является вряд ли будет удовлетворительным.
Других решений пока нет …