Произвольные числа создаются из алгоритмов, которые используют начальные значения и другие параметры для производства последовательности произвольных чисел. Такой ряд произвольных чисел называется потоком произвольных чисел. При создании моделей с помощью произвольных чисел, важно проследить, из какого потока происходят произвольные числа. Иногда все произвольные числа для разных процессов могут поступать из одного потока, а в других случаях каждому процессу могут требоваться уникальные потоки.
Есть много различных генераторов чисел для создания произвольных чисел. Три метода в ArcGIS для создания произвольных значений (типы генераторов): функция Standard C Rand(), собранный алгоритм ACM 599 и Mersenne Twister mt19937. Вы можете воспроизвести результаты из модели, которая использует произвольные числа. Для обеспечения воспроизводимости результатов в моделях можно добавить начальные объекты в качестве параметра. Если вы установите один источник для двух разных запусков одной модели, которая использует произвольные точки, модель создаст одинаковые результаты.
Генератор случайных чисел, определяется либо глобально в параметрах среды, либо в каком-нибудь инструменте, который использует произвольные значения, например Вычислить значение (Calculate Value), Вычислить поле (Calculate Field), Создать произвольный растр (Create Random Raster) или Создать произвольно расположенные точки (Create Random Points). Генератор произвольных чисел запускает поток произвольных чисел на основе типа и исходного файла генератора. Числа определяются произвольно, значения - от 0 до 1. Числа создаются при необходимости.
Во многих случаях, например, когда значения используются для моделирования неопределенности исходных данных или моделирования параметров, не эффективно добавить ясные случайные значения в инструмент. Как правило, существует априорная информация о распределении неопределенности во входных данных или параметров в модели. Такие инструменты, как Создать произвольный растр (Create Random Raster), Вычислить значение (Calculate Value) и Вычислить поле (Calculate Field), вытягивают номера от случайного потока и преобразуют их на основе распределения, определенного в инструменте. Например, при добавлении случайных значений на входную поверхность высоты с точностью плюс-минус 2 фута, если модель запускается много раз в анализе с ошибками, больше выполнений должны добавить значения от 0 до 1, затем от 1 до 2. При использовании случайных значений, могут быть установлены диапазон значений, используемое распределение (например, нормальное или Пуассоново) и параметры распределения (например, стандартное отклонение). Каждое значение не зависит от остальных.
Есть несколько распределений, допустимых для присвоения (или преобразования) значений в инструментах, которые используют распределения (например, Создать произвольный растр (Create Random Raster), Вычислить значение (Calculate Value) и Вычислить поле (Calculate Field)). Распределения в целом дают разные результаты, и то, какое распределение выбрать, определяется целевым назначением. Выбранные распределения должны быть лучшим представлением моделируемого процесса.
Более подробно о допустимых распределениях и о том, как они в целом используются, см. в разделе Распределения для присвоения произвольных значений. См. Синтаксис распределения для произвольных значений для синтаксиса и параметров для каждого распределения.
Настройка случайного потока глобально
Тип и источник генератора случайных чисел установлены в разделе Случайные числа (Random Numbers) диалогового окна Параметры среды (Environment Settings). Все последующие инструменты, использующие произвольные значения, такие как ArcGIS.Rand() (в Вычислить значение (Calculate Value) и Вычислить поле (Calculate Field)), Создать произвольный растр (Create Random Raster) и Создать произвольные точки (Create Random Points), получают значения из случайного потока. Поскольку каждому инструменту требуется произвольное число, числа эти получаются из глобального произвольного потока.
Создание разных потоков случайных чисел для каждого процесса
Возможно, вы хотите, чтобы уникальные потоки для каждого процесса убеждались, что процесс независимо произвольный, не влияли на результаты или производили выходные данные. Вы можете создать поток локально, установив генератор случайных чисел и источник локально (например, нажав кнопку Параметры среды (Environments) инструмента или щелкнув правой кнопкой на инструменте в ModelBuilder и нажав Свойства (Properties)). Создается новый поток случайных чисел, и если этом инструменту нужно случайное число, он вытянет только из этого недавно созданного потока. Если модель повторяется, инструмент с присвоенным потоком случайных чисел продолжит вытягивать значения из локального потока при каждом повторении. Другие инструменты не будут вытягивать значения из потока.
Вы можете запустить любое количество локальных потоков в модели, по вашему желанию. А также у вас есть смесь некоторых инструментов, вытягивающих случайные значения из глобального потока, в то время как остальные вытягивают значения из собственного локального потока.
Произвольное изменение параметра
Добавление случайности параметру в ModelBuilder - это пятиступенчатый процесс. В следующем примере ModelBuilder, z-коэффициент для функции уклона Spatial Analyst будет произвольно изменен.
- Добавить инструмент Уклон (Add the Slope) из набора Инструменты Spatial Analyst.
- Добавить инструмент Вычислить значение (Calculate Value) из набора Инструменты Data Management.
- Введите выражение в инструмент Вычислить значение (Calculate Value), и если в выражение нужно добавить случайность, введите функцию ArcGIS.Rand() в выражение с любой арифметической операцией (или любым выражением). Выражение, которое будет обрабатываться в этом примере — arcgis.rand("Normal 2 2") * 2.
- Чтобы создать отношение между выходными данными инструмента Вычислить значение (Calculate Value) и параметром, к которому добавляется случайность (z-коэффициент в инструменте Уклон (Slope)), откройте инструмент Уклон (Slope) и в поле Z коэффициент выберите имя выходной переменной из ниспадающего списка (output_value).
- Щелкните правой кнопкой на инструменте Уклон (Slope), нажмите Свойства (Properties), затем создайте выходные данные из инструмента Вычислить значение (Calculate Value), предварительное условие для инструмента Уклон (Slope). Этот последний шаг гарантирует, что выражение в инструменте Вычислить значение (Calculate Value), z-коэффициент, всегда будет вычисляться до запуска инструмента Уклон (Slope).
- Запустите модель.
Создание случайных значений для произвольно размещенных точек
Присвоение произвольных значений произвольно расположенным точкам состоит из трех этапов. Во-первых, определенное количество точек размещается в инструменте Создать случайные точки (Create Random Points). Во-вторых, инструмент Добавить поле используется для создания нового поля в выходном векторном слое из инструмента Создать произвольно расположенные точки. В-третьих, инструмент Вычислить поле (Calculate Field) используется для присвоения случайных значений заново созданному полю путем прямого использования функции ArcGIS.Rand() с распределением в качестве простого выражения, или путем использования функции ArcGIS.Rand() в сложном выражении.