AnyLogic
Развернуть
Размер шрифта

Выбор случайного элемента

Выбор случайного агента из популяции

AnyLogic предоставляет функции для выбора случайного агента из заданной популяции. Эти функции определены в классе UtilitiesCollection и являются глобальными (доступными из любой части модельного кода). Любую функцию из списка ниже можно вызвать, просто напечатав ее имя, без префикса с именем популяции: randomWhere( people, p -> p.income > 10000 );.

Функция Описание
Agent randomWhere( population, condition ) Возвращает одного случайно выбранного агента в заданной популяции, который удовлетворяет заданному условию. Если популяция пуста, или нет агента, удовлетворяющего заданному условию, функция вернет null.
Примеры:
Person wealthyPerson = randomWhere( people, p -> p.income > 10000 );
Person wealthyMan = randomWhere( people, p -> p.income > 10000 && p.sex == MALE );
В этом примере мы проверяем два условия (используем логический оператор AND &&, чтобы указать AnyLogic, что результаты вычислений обоих заданных условий должны быть равны true). Функция возвращает случайно выбранного агента, удовлетворяющего обоим условиям.
Person wealthyYoungMan = randomWhere( people, p -> p.income > 10000 &&p.sex == MALE && p.age < 21 );
Agent randomWhere( population, condition, java.util.Random r ) Подобна randomWhere( population, condition ). Использует указанный нестандартный генератор случайных чисел для выбора агента.

Выбор случайного элемента из коллекции

AnyLogic предоставляет функции для выбора случайного элемента из заданной коллекции. Эти функции определены в классе UtilitiesCollection и являются глобальными (доступными из любой части модельного кода). Любую функцию из списка ниже можно вызвать, просто напечатав ее имя, без префикса с именем коллекции:

randomWhere( people, p -> p.income > 10000 );
Функция Описание
randomWhere( collection, condition ) Возвращает один случайно выбранный элемент из заданной коллекции, который удовлетворяет заданному условию. Если коллекция пуста, или отсутствует элемент, удовлетворяющий заданному условию, функция вернет null.
Примеры:
Person wealthyPerson = randomWhere( people, p -> p.income > 10000 );
Person wealthyMan = randomWhere( people, p -> p.income > 10000 && p.sex == MALE );
В этом примере мы проверяем два условия (используем логический оператор AND &&, чтобы указать AnyLogic, что результаты вычислений обоих заданных условий должны быть равны true). Функция возвращает случайно выбранный элемент, удовлетворяющий обоим условиям.
Person wealthyYoungMan = randomWhere( people, p -> p.income > 10000 && p.sex == MALE && p.age < 21 );
randomWhere( collection, condition, java.util.Random r ) Подобна randomWhere( коллекция, условие ). Использует указанный нестандартный генератор случайных чисел для выбора элемента.

Выбор случайного элемента из массива

AnyLogic предоставляет функции для выбора случайного элемента из заданного массива. Эти функции определены в классе UtilitiesCollection и являются глобальными (доступными из любой части модельного кода). Любую функцию из списка ниже можно вызвать, просто напечатав ее имя, без префикса с именем массива: randomWhere( people, p -> p.income > 10000 );.

Функция Описание
T randomFrom( T[] array) Возвращает один случайно выбранный элемент массива (или null, если массив пустой). Вызов этого метода эквивалентен вызову следующей функции:
array[ uniform_discr( array.length - 1 ) ]
T randomFrom( T[] array, java.util.Random r) Подобна randomFrom( T[] array). Использует нестандартный генератор случайных чисел для выбора элемента.
T randomWhere( T[] array, condition ) Возвращает один случайно выбранный элемент из заданного массива, который удовлетворяет заданному условию. Если массив пуст, или отсутствует элемент, удовлетворяющий заданному(-ым) условию(-ям), функция вернет null.
T randomWhere( T[] array, condition, java.util.Random r ) Подобна randomWhere( T[] array, condition). Использует нестандартный генератор случайных чисел для выбора элемента.

Выбор случайной константы из списка

В AnyLogic есть функции, позволяющие выбрать случайный элемент из заданного списка (enumeration). Эти функции определяются классом Utilities и являются глобальными — т.е. доступны в любой части модели.

Любую функцию из перечисленных ниже можно вызвать, введя ее имя.

Функция Описание
<T extends java.lang.Enum<T>> T randomFrom(java.lang.Class<T> enumeration) Возвращает случайно выбранную константу из указанного класса типа enumeration. Вызывает ошибку NullPointerException, если указанный класс имеет значение null или не принадлежит к типу enumeration.
<T extends java.lang.Enum<T>> T randomFrom(java.lang.Class<T> enumeration, java.util.Random r) Возвращает случайно выбранную константу из указанного класса типа enumeration. Использует указанный нестандартный генератор случайных чисел r для выбора константы. Вызывает ошибку NullPointerException, если указанный класс имеет значение null или не принадлежит к типу enumeration.

Выбор случайного варианта из списка вариантов

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

  • randomFrom( Gender.class );
  • Gender.random( this );

Выбор случайного цвета

Чтобы выбрать случайный цвет из списка 140 стандартных цветов, используйте глобальную функцию java.awt.Color randomColor().

Создание случайного объекта из заданного списка объектов

AnyLogic предоставляет функции для создания случайного объекта из заданного списка объектов. Эти функции определены в классе UtilitiesCollection и являются глобальными (доступными из любой части модельного кода). Любую функцию из списка ниже можно вызвать, просто напечатав ее имя, без префикса с именем списка объектов.

Функция Описание
<T> T randomlyCreate(java.lang.Class<? extends T>... classes) Создает случайно выбранный объект, используя один из переданных конструкторов классов объектов.
Возвращает случайно выбранный и созданный объект — или null, если не был указан ни один класс.
Пример использования в поле Новый вагон блока TrainSource Железнодорожной библиотеки:
randomlyCreate(OpenCar.class, BoxCar.class, HopperCar.class);

classes — классы объектов
<T> T randomlyCreate(java.util.function.Supplier<? extends T>... constructors) Создает случайно выбранный объект, используя один из переданных конструкторов.
Возвращает случайно выбранный и созданный объект — или null, если не был указан ни один класс.
Пример использования в поле Новый вагон блока TrainSource Железнодорожной библиотеки:
randomlyCreate(OpenCar::new, BoxCar::new, HopperCar::new);

constructors — конструкторы или другие функции / лямбда-выражения, возвращающие экземпляры объектов
<T> T randomlyCreate(java.util.Random r, java.lang.Class<? extends T>... classes) Создает случайно выбранный объект, используя один из переданных конструкторов классов объектов.
Выбор осуществляется с помощью заданного нестандартного генератора случайных чисел r. Возвращает случайно выбранный и созданный объект — или null, если не был указан ни один класс.
Пример использования в поле Новый вагон блока TrainSource Железнодорожной библиотеки:
randomlyCreate(OpenCar.class, BoxCar.class, HopperCar.class);

r — нестандартный генератор случайных чисел
classes — классы объектов
<T> T randomlyCreate(java.util.Random r, java.util.function.Supplier<? extends T>... constructors) Создает случайно выбранный объект, используя один из переданных конструкторов.
Выбор осуществляется с помощью заданного нестандартного генератора случайных чисел r. Возвращает случайно выбранный и созданный объект — или null, если не был указан ни один класс.
Пример использования в поле Новый вагон блока TrainSource Железнодорожной библиотеки:
randomlyCreate(OpenCar::new, BoxCar::new, HopperCar::new);

r — нестандартный генератор случайных чисел
constructors — конструкторы или другие функции / лямбда-выражения, возвращающие экземпляры объектов
Как мы можем улучшить эту статью?