Я пытаюсь генерировать случайные поступления через распределение Пуассона для моего проекта. Часть кода:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cmath>
#include <random>
#include <ctime>
int nextTime(double lambda,int timeslots,int PU_number);
int main()
{
srand(time(0));
//some code
nextTime(4,time_slots,PU_number);
}
int nextTime(double lambda,int timeslots,int PU_number)
{
int mat[PU_number][timeslots];
std::default_random_engine generator;
std::poisson_distribution<int> distribution(lambda);
int number;
int total=0;
for(int i=0; i< PU_number;i++)
{
total=0;
for(int j=0;j<timeslots;j++)
{
number = distribution(generator);
total+=number;
mat[i][j]=total;//another matrix, not relevant here
cout<<number<<" ";
}
cout<<endl;
}
return 0;
}
Выше код всегда выдает одинаковые числа. что здесь не так?
srand
семена rand
, Не твое std::default_random_engine
, Чтобы посеять это, используйте
std::default_random_engine generator(std::random_device{}());
^^^^^^^^^^^^^^^^^^^^^^
e.g., any seed can go here