Как сказал @RobertDodier, попробуйте использовать некоторое расширенное распределение для радиуса.Я хотел бы предложить следующее: Бета-дистрибутив .
Во-первых, он естественным образом находится в диапазоне [0 ... 1], нет необходимости усекать, принимать / отклонять и т. Д. Во-вторых,у него есть два параметра (a, b), которые можно использовать для получения одного пика, ноль в 0 и наклон до 1. Посмотрите на графики на вики-странице.И, наконец, оно реализовано в 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)
создаст такой сюжет
Похоже ли это на пончик?
ОБНОВЛЕНИЕ
Это одно с прозрачным отверстием в центре и формой, предложенной @ 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)
Еще одно с прозрачным отверстием в центре и симметричной формойкак настоящий пончик
r = hole + (1.0-hole)*rbeta(N, 2.0, 2.0)