Вызов генератора случайных чисел в методе - PullRequest
0 голосов
/ 12 января 2019

Я использовал код, предоставленный 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 определяется только в конструкторе класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...