프로젝트에 대한 포아송 분포를 통해 임의의 도착을 생성하려고합니다. 코드 부분 :poisson 분포는 항상 각 실행마다 동일한 인스턴스를 생성합니다.
#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;
}
위 코드는 항상 동일한 숫자를 생성합니다. 여기서 뭐가 잘못 됐니?
main에서'srand (time (0));을 한 번만 호출해야합니다. –
나는 그것을했다. 여전히 같은. 나는 그것을 한 번만, 같은 결과로 불렀다. 방금 두 번째 기회를 추가하여 기회를 보았습니다. 다른 사람들을 위해 편집하겠습니다. –
시드를 설정하기 전에 발전기를 정의해야하는 경우 ... generator.seed (NEWseed);를 사용하면 발전기 시드를 NEWseed 값으로 재설정 할 수 있습니다. –