Я использовал код, предоставленный Cornstalk в ссылке:
Как сгенерировать случайное число в C ++?
Это прекрасно работает, если реализовано внутри функции в моем классе, но мне нужно получить случайные числа в другой функции в этом классе, поэтому переменная RNDRange (см. Ниже) должна быть определена на уровне класса. Затем мне нужно инициализировать его, как показано ниже в функции A, чтобы я мог вызвать переменную в функции B.
std ::iform_int_distribution RNDRange (0, MinimumNumberOfAnimals - 1);
со ссылкой на код ниже:
Сделано
std :: mt19937 RandomNumberGenerator;
переменная уровня класса и прокомментировала то же самое внутри функции A. Работает нормально.
Попытка определить RNDRange на уровне класса, чтобы я мог затем инициализировать его в функции A и вызвать RNDRange (RandomNumberGenerator) в функции B. Поскольку я не могу определить RNDRange на уровне класса (не знаю как), а затем инициализировать его в функции A, вызвать RNDRange (RandomNumberGenerator) в функции B. невозможно.
std::mt19937 RandomNumberGenerator; // Mersenne Twister pseudo-random generator of 32-bit numbers with a state size of 19937 bits
RandomNumberGenerator.seed(std::random_device()());
std::uniform_int_distribution<std::mt19937::result_type> RNDRange(0, MinimumNumberOfAnimals - 1); // Seeds a random number generator for the range between zero and MinimumNumberOfAnimals
double MyRnd;
for (int i = 0; i < 10; i++) // tests
{
MyRnd = RNDRange(RandomNumberGenerator);
MyRnd = MyRnd / MinimumNumberOfAnimals;
// Use MyRnd
}
Прекрасно работает внутри функции A, но я не могу понять, как определить RNDRange на уровне класса и затем инициализировать с помощью (0, MinimumNumberOfAnimals - 1) в функции A. MinimumNumberOfAnimals определяется только в конструкторе класса.