Нестандартный генератор случайных чисел
По умолчанию все функции вероятностных распределений в
AnyLogic, объекты Основной библиотеки, случайно срабатывающие переходы и
события, сам исполняющий модуль AnyLogic, и т.д. –
одним
словом, все источники случайности в AnyLogic используют для
своих
вычислений принятый в AnyLogic по умолчанию генератор случайных чисел
(ГСЧ). Этот ГСЧ является экземпляром Java класса Random.
Если по каким-либо причинам Вас не устраивает качество
стандартного генератора Random,
то Вы можете:
- Заменить используемый в AnyLogic по умолчанию генератор
случайных чисел Вашим собственным.
- Создать несколько различных генераторов случайных чисел и
явно
задавать, какой из них Вы хотите использовать, при вызове функций
вероятностных распределений.
Чтобы заменить
используемый по умолчанию генератор случайных чисел на другой
- Создайте Ваш собственный генератор случайных чисел (ГСЧ).
Это должен быть подкласс Java класса Random,
например, MyRandom.
- Выберите эксперимент в панели Проекты и перейдите
на страницу его основных свойств.
- Выберите опцию Нестандартный
генератор (подкласс класса Random) из группы кнопок Генератор случайных чисел
и введите выражение, возвращающее экземпляр класса Вашего генератора
чисел, в расположенном справа поле, например:
new MyRandom() или
new MyRandom( 1234 )
Задание
нестандартного генератора случайных чисел as default RNG
Инициализация выбранного по умолчанию ГСЧ (как
поставляемого вместе с AnyLogic, так и Вашего собственного)
производится во время инициализации эксперимента и затем перед каждым
"прогоном" модели.
Вы можете заменить используемый по умолчанию генератор другим,
вызвав метод:
setDefaultRandomGenerator( Random r )
Но Вы должны учитывать тот факт, что перед каждым "прогоном"
модели
генератор будет заново выбираться и инициализироваться исходя из
установок, заданных на странице основных свойств эксперимента.
Чтобы использовать нестандартный
генератор случайных чисел в функции вероятностного распределения
- Создайте и проинициализируйте экземпляр класса Вашего ГСЧ.
Например, это может быть простая переменная myRNG
класса Random или его
подкласса.
- При вызове функции распределения, передайте ссылку на Ваш
ГСЧ myRNG в качестве
аргумента функции, например:
uniform( myRNG )
или
triangular( 5, 10, 25, myRNG )
Если у функции есть несколько различных нотаций с различными наборами
параметров, то у некоторых из них может не быть варианта, позволяющего
задавать нестандартный ГСЧ. Но такая нотация всегда есть у функции с
наиболее полным набором параметров.