如何生成距离点X欧几里得距离小于d的n个点?

3

假设我有一个点: point <- c(1, 2) 如何生成与该点欧几里得距离小于某个选择值(例如3)的10个点? 换句话说:如何生成在该点邻域内的点集?

1个回答

6
最直接的方法是随机选择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)

3
为了从一个连续空间中随机取样,你可以执行以下操作:r <- 3 * runif(10)theta <- 2 * pi * runif(10) - flodel
2
为了从该区域均匀采样,您应该执行 r <- 3 * sqrt(runif(10))。使用每种方法下的 n = 10000 绘制结果,以查看未转换的均匀分布 r 如何过度采样中心。 - Gregor Thomas
@shujaa 另一个好的观点 - 应该采样区域而不是距离中心的距离。 - Señor O

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接