Я пытался смоделировать введение случайных точек в круг, чтобы любая часть круга имела одинаковую вероятность наличия дефекта. Я ожидал, что число на площадь полученного распределения будет соответствовать распределению Пуассона, если я разделю круг на прямоугольники равной площади.
Поскольку это требует только размещения точек в круглой области, я ввел два равномерных случайных распределения в полярных координатах: (радиус) и (полярный угол).θ
Но после выполнения этой инъекции я ясно получаю больше точек в центре круга по сравнению с краем.
Каков будет правильный способ выполнить эту инъекцию по кругу, чтобы точки были случайным образом распределены по кругу?
random-generation
circular-statistics
Jonjilla
источник
источник
Ответы:
Вы хотите, чтобы пропорция точек была равномерно пропорциональна площади, а не расстоянию до начала координат. Так как площадь пропорциональна квадрату расстояния, создайте одинаковые случайные радиусы и возьмите их квадратные корни. Объедините это с равномерным полярным углом.
Это быстрый и простой в коде код, эффективный при выполнении (особенно на параллельной платформе), который генерирует точно указанное количество баллов.
пример
Это рабочий
R
код для иллюстрации алгоритма.источник
Отбор проб может быть использован. Это означает, что мы можем сэмплировать из двумерного равномерного распределения и выбирать сэмплы, которые удовлетворяют условию диска.
Вот пример.
источник
Я дам вам общий n-мерный ответ, который, конечно, работает и для двумерного случая. В трех измерениях аналог диска представляет собой объем сплошного шара (сферы).
Есть два подхода, которые я собираюсь обсудить. Один из них я бы назвал «точным» , и вы получите полное решение с ним на R. Второй, который я назвал эвристическим , и это только идея, полного решения не предоставляется.
«Точное» решение
Мое решение основано на работах Марсальи и Мюллера . По сути, так получается, что нормализованный по своей норме гауссов вектор дает равномерно распределенные точки на d-мерной гиперсфере:
Вот фрагмент кода для трехмерного случая, то есть сплошной шар:
Эвристический подход
источник
Вот альтернативное решение в
R
:источник
r <- seq(0, 1, by=1/10)
r
из Uniform (0,1).