Инструмент Создать произвольно расположенные точки случайным образом размещает указанное количество точек в экстенте окна или внутри объектов класса полигональных, линейных или точечных объектов.
Первым шагом обработки является создание потока случайных чисел из генератора случайных чисел и начального значения. При создании случайных точек в пределах заданного экстента определяется случайное значение по оси x и другое значение по оси y экстента, которые становятся координатами x и y для точки. Чтобы случайным образом выбрать точку на оси x, выбирается следующее неиспользуемое значение в потоке случайных чисел и преобразуется в равномерное распределение, где минимум и максимум являются минимумом и максимумом для x-экстента. То же самое делается для оси y. Эти два значения определяют первую случайную точку. Этот процесс повторяется до тех пор, пока не будет достигнуто указанное количество точек.
Чтобы случайным образом разместить указанное количество точек в каждом полигоне, полигоны разбиваются на треугольники разного размера с использованием стандартного алгоритма разбиения полигонов. Вся площадь каждого полигона заполнена треугольниками. Чтобы разместить первую точку в первом полигоне, случайным образом выбирается один из треугольников общего полигона. Вероятность выбора конкретного треугольника зависит от его размера. Чем больше треугольник, тем выше вероятность того, что он будет выбран. Две стороны треугольника становятся двумя осями, относительно которых размещается случайная точка. Как и в случае с опцией экстента, следующее неиспользованное значение берется из случайного потока и преобразуется в равномерное распределение, используя начало оси треугольника в качестве минимума, а конец стороны в качестве максимума. Значение выбирается случайным образом на оси. То же самое делается для другой оси или стороны треугольника. Эти два случайных значения используются для размещения точки. Точка будет находиться внутри параллелограмма, образованного двумя осями треугольника. Если точка попадает в пределы третьей стороны, определяющей треугольник, то она будет выбрана. Если точка выходит за пределы треугольника, она попадет в другую половину параллелограмма. Поскольку эта половина параллелограмма является зеркальным отображением определяющего треугольника (отраженного по третьей стороне), точка отражается обратно в определяющий треугольник. Этот процесс повторяется до тех пор, пока в полигон не будет помещено заданное количество точек, и повторяется для каждого полигона.