Сначала мы генерируем cdf [x], который равен
Вероятность того, что точка меньше расстояния x от центра круга.Предположим, что круг имеет радиус R.
очевидно, если x равен нулю, то cdf [0] = 0
очевидно, если x равен R, то cdf [R] = 1
очевидно, что если x = r, то cdf [r] = (Pi r ^ 2) / (Pi R ^ 2)
Это потому, что каждая «малая область» на круге имеет одинаковую вероятность бытьвыбрал, так что вероятность пропорциональна рассматриваемой области.И область, заданная расстоянием x от центра круга, равна Pi r ^ 2
, поэтому cdf [x] = x ^ 2 / R ^ 2, потому что Pi компенсирует друг друга
у нас есть cdf [x] = x ^ 2 / R ^ 2, где x переходит от 0 до R
Итак, мы решаем для x
R^2 cdf[x] = x^2
x = R Sqrt[ cdf[x] ]
Теперь мы можем заменить cdf случайным числомот 0 до 1
x = R Sqrt[ RandomReal[{0,1}] ]
Наконец
r = R Sqrt[ RandomReal[{0,1}] ];
theta = 360 deg * RandomReal[{0,1}];
{r,theta}
получаем полярные координаты {0,601168 R, 311,915 градуса *