Я пытаюсь предоставить интерфейс - через файл конфигурации - чтобы мои пользователи выбирали дистрибутив для некоторых параметров, которые они используют.Я хотел бы использовать для этой цели алгоритмы генератора случайных чисел STL.
Предположим, что моя программа читает JSON из командной строки.Для JSON, представленного ниже, программе необходимо понимать, что она должна генерировать случайное число из нормального распределения с заданным средним и стандартным отклонением.(Я использую те же имена параметров, что и библиотека STL для очистки.)
{
"dist": "normal_distribution",
"mean": 0.1,
"stddev": 0.5
}
До сих пор я мог легко анализировать JSON и использовать param_type
каждого распределения для инициализации распределения.Я использую имя, чтобы решить, какой дистрибутив решать param_type
и дистрибутив.
Чего я не знаю, так это как это реализовать.Я знаю, что должен предоставить какой-то фабричный метод для этого, передать JSON и выплюнуть функцию или класс.Если я хочу вернуть экземпляр класса, скажем, unique_ptr
генератора, мне нужно определить абстрактный класс, например, RandDist
и написать какой-то адаптер для включения моего ввода, .... Iкак правило, многим не нужно от класса, достаточно просто метода gen()
.
Мне интересно, есть ли у кого-нибудь мысли по этому поводу.Или, если кто-то знает библиотеку, которая может это сделать.
PS Ввод необязательно должен быть объектом JSON, любая хеш-таблица будет работать сама по себе.