Как сбросить дистрибутив Boost :: variate_generator?

Я пытаюсь написать функцию, которая принимает мин и макс и возвращает случайный дубль между ними. Я пытался использовать Boost :: variate_generator, чтобы получить случайное число между двумя двойными числами, но проблема в том, что я не могу изменить его распределение, поэтому мне пришлось бы создавать новое начальное число при каждом вызове. Он побеждает назначение генератора псевдослучайных чисел, если я создаю новое начальное число каждый раз, когда я его вызываю.

Есть ли способ получить что-то подобное ниже, Boost не нужен, просто он дает хорошие результаты.

double getRandom(double min, double max);
{
return randomNumberBetweenMinAndMax;
}

1

Решение

Есть много способов сделать это. У вас может быть аргумент с параметром по умолчанию, который по умолчанию равен некоторому глобально доступному объекту. Вы можете иметь статическую переменную локальной области действия, в которой хранится генератор. Вы можете иметь статическую переменную области видимости файла (похожую на статическую класс, если бы она была в классе), в которой хранится генератор. Вы можете иметь одноэлементный генератор, который получает функция.

Я неравнодушен к параметрам по умолчанию с глобально доступным объектом по умолчанию. Как правило, он безопасен для потоков, поскольку генератор является потокобезопасным, и вы инициализируете его до создания потоков.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]