Допустим, у меня есть точка: point <- c(1, 2)
Как я могу сгенерировать 10 точек с евклидановым расстоянием от point
ниже некоторого выбранного значения, например. 3. Другими словами: как я могу сгенерировать набор точек в окрестности моей точки?
Как я могу сгенерировать n точек с евклидановым расстоянием меньше, чем d от X
Ответы (1)
Самый простой способ сделать это — случайным образом выбрать расстояние от 0 до 3, а затем направление от 0 до 360. Сделайте это с желаемой точностью:
r <- 3 * sqrt(runif(10)) ##Since area increases proportionally to distance, as pointed out in comments
theta <- 2 * pi * runif(10)
Чтобы получить координаты:
x <- point[1] + r * cos(theta)
y <- point[2] + r * sin(theta)
person
Señor O
schedule
30.05.2014
Чтобы сэмплировать из непрерывного пространства, вы должны сделать:
r <- 3 * runif(10)
и theta <- 2 * pi * runif(10)
.
- person flodel; 31.05.2014
Для равномерного отбора проб из области необходимо выполнить
r <- 3 * sqrt(runif(10))
. Постройте результаты с n = 10000
под каждым методом, чтобы увидеть, насколько непреобразованный юниформ r
превосходит центральную выборку.
- person Gregor Thomas; 31.05.2014
@shujaa Еще один хороший момент - отбирать образец следует не на расстоянии от центра.
- person Señor O; 31.05.2014