如何模拟R中给定半径内固定点到随机点的距离



我正在尝试模拟一个固定点和在给定半径内随机分布的其他点之间的N个距离。

我想到的一种方法是模拟随机点的坐标,然后计算距离,然后排除大于给定半径的距离(比如r=250m(:

X <- runif(N, -250, 250) # simulate random X coordinate
Y <- runif(N, -250, 250) # simulate random Y coordinate
distance <- sqrt(X^2 + Y^2) # calculate distance from random points to center
distance <- distance[distance < 250] # only include values within given radius

然而,我想知道是否有一种方法可以在不模拟坐标本身的情况下模拟这些距离。我的最终目标是能够在JAGS中做到这一点,所以在JAGS工作的解决方案是首选的。有没有一个概率分布可以用来描述这些距离到随机点的概率?理想的解决方案是这样的:

distance ~ pDistribution(N, 250)

或者在JAGS:中

for (1 in 1:N) {
distance[i] ~ pDistribution(250)
}

@jlhoward在极坐标思考方面有一个好主意——这就是我朝着正确方向前进的原因。但是,通过使用r=runif(250(,您最终会得到聚集在中心周围的点。为了使点在整个圆中均匀随机分布,必须在距离中心更远的地方有更多的点(因为周长/面积随着半径的增加而增加(。事实证明,使用r <- 250 * sqrt(runif(N, 0, 1))可以做到这一点。对于我的问题,我所需要的只是生成这些距离(即半径(,而不是实际的点,所以这段代码是一个足够的解决方案。这段关于在圆圈中寻找随机点的精彩视频帮助我最终找到了答案。

最新更新