Я могу получить mt19937 rng в простом приложении. Теперь я пытаюсь сделать его посеянным для каждого приложения и использовать его несколько раз, когда это необходимо. Вот мой код Я получаю ошибку в GenerateRandomNumber - «gen: undeclared identifier».
main.cpp
#include <iostream>
#include "general.h"
int main() {
CallOncePerApp();
// Loop for output testing
// Ultimately, GenerateRandomNumber can be called from anywhere in any CPP file
for (int i=0;i<10;i++) {
int dwGen = GenerateRandomNumber(1, 1000);
cout << dwGen; // print the raw output of the generator.
cout << endl;
}
}
general.h:
#include <random>
using namespace std;
extern random_device rd;
extern void CallOncePerApp();
extern mt19937 gen;
extern unsigned int GenerateRandomNumber(unsigned int dwMin, unsigned int dwMax);
general.cpp:
#include <random>
using namespace std;
random_device rd;
mt19937 gen;
void CallOncePerApp()
{
// Error C2064 term does not evaluate to a function taking 1 arguments
gen(rd); // Perform the seed once per app
}
unsigned int GenerateRandomNumber(unsigned int dwMin, unsigned int dwMax)
{
uniform_int_distribution <int> dist(dwMin, dwMax); // distribute results between dwMin and dwMax inclusive.
return dist(gen);
}