产生“甜甜圈”形状的线性分布

时间:2019-05-27 12:53:56

标签: r random statistics probability

我正在尝试为圆内的点分配分布,其中点朝向中心更多,但为甜甜圈形状

我可以产生一个均匀分布的甜甜圈形状(1),或者是一个指向中心的点更多的圆(2),但是没有一个甜甜圈形状指向其内部边界的点太多。

(1)

TTempTable&& MyFunction() {
   TTempTable tmp = f(...);
   ...
   return std::move(tmp);
}

(2)

r = sqrt(runif(250, min = 0.25, max =1))
p = runif(250)
theta = p *2*pi
a = r * cos(theta) #coordinates for circle
b = r * sin(theta)
plot(a,b)

我最近的尝试是修改程序(2),其中r限制在0.5和1之间,但这会删除大部分最靠近中心的点,并且内部不存在太多点。

1 个答案:

答案 0 :(得分:1)

正如@RobertDodier所说,尝试对半径使用一些高级分布。我想提出的是Beta distribution

首先,它自然在[0 ... 1]范围内,无需截断,接受/拒绝等。 其次,它具有两个参数(a,b),可用于获取单个峰,0处为零,斜率为1。请查看Wiki页面中的图形。最后,它是在 R 中实现的。 a小于b表示峰值在0.5的左边,a大于b表示峰值在0.5的右边。

沿线

N = 10000
r = rbeta(N, 7.0, 5.0)
theta = 2.0*pi*runif(N)
a = r * cos(theta)
b = r * sin(theta)
plot(a,b)

将产生类似的情节

enter image description here

看起来像甜甜圈吗?

更新

这是一个由中心的透明孔和@RobertDodier提出的形状

N = 10000
hole = 0.25
r = hole + (1.0-hole)*rbeta(N, 1.0, 3.0)
theta = 2.0*pi*runif(N)
a = r * cos(theta)
b = r * sin(theta)
plot(a,b)

enter image description here

另一个中心有透明孔且对称的形状,像真正的甜甜圈

r = hole + (1.0-hole)*rbeta(N, 2.0, 2.0)

enter image description here