Skip to Content

§3. Метод Неймана: оставляем только то, что под графиком

Метод обратной функции требует посчитать F−1F^{-1}. А если плотность хитрая и функцию распределения даже не выписать? Для этого фон Нейман придумал приём, который работает почти всегда: кидать точки и отбраковывать лишние. Его называют методом исключения.

Рецепт

Пусть величина ξ\xi живёт на отрезке [a,b][a, b], а её плотность ограничена: pξ(x)≤Cp_\xi(x) \le C. Обведём график плотности прямоугольником [a,b]×[0,C][a,b] \times [0, C] и будем кидать в него точки равномерно:

Xi=a+(b−a) η2i−1,Yi=C η2i.X_i = a + (b - a)\,\eta_{2i-1}, \qquad Y_i = C\,\eta_{2i}.

Пусть ν\nu — номер первой точки, попавшей под график: ν=min⁡{i:Yi≤pξ(Xi)}\nu = \min\{i : Y_i \le p_\xi(X_i)\}. Выдаём её абсциссу XνX_\nu.

Утверждение 4. Величина XνX_\nu распределена так же, как ξ\xi.

По-дворовому: насыпал семки в коробку наугад, а потом выкинул все, что легли выше нарисованной кривой. Оставшиеся лежат гуще там, где кривая выше, — ровно как требует плотность.

Почему это работает

Шанс, что одна точка ляжет под график, — это доля площади под кривой в площади прямоугольника. Площадь под плотностью равна 1, поэтому

p=P(Y1≤pξ(X1))=∫abpξ(x) dxC(b−a)=1C(b−a),q=1−p.p = \mathbf{P}\bigl(Y_1 \le p_\xi(X_1)\bigr) = \frac{\int_a^b p_\xi(x)\,dx}{C(b-a)} = \frac{1}{C(b-a)}, \qquad q = 1 - p.

Теперь разложим по номеру первой удачной точки (формула полной вероятности). «Остановились на nn-й и её абсцисса ≤x\le x» значит: первые n−1n - 1 точек промахнулись, а nn-я легла под график левее xx. Точки независимы, поэтому

FXν(x)=∑n=1∞qn−1 P(Yn≤pξ(Xn), Xn≤x)=∑n=1∞qn−1 ∫axpξ(u) duC(b−a).F_{X_\nu}(x) = \sum_{n=1}^{\infty} q^{n-1}\,\mathbf{P}\bigl(Y_n \le p_\xi(X_n),\ X_n \le x\bigr) = \sum_{n=1}^{\infty} q^{n-1}\,\frac{\int_a^x p_\xi(u)\,du}{C(b-a)}.

По кирпичикам: qn−1q^{n-1} — шанс первых n−1n-1 промахов; дробь — доля площади под графиком левее xx, то есть p⋅Fξ(x)p \cdot F_\xi(x). Остаётся геометрическая прогрессия:

FXν(x)=∑n=1∞qn−1 p Fξ(x)=Fξ(x).F_{X_\nu}(x) = \sum_{n=1}^{\infty} q^{n-1}\, p\, F_\xi(x) = F_\xi(x).

Цена: сколько бросков уходит

Каждая точка удачна с шансом p=1C(b−a)p = \frac{1}{C(b-a)}, поэтому на одно число в среднем уходит 1p=C(b−a)\frac1p = C(b-a) бросков — ровно площадь прямоугольника. Отсюда правило: прямоугольник должен облегать график как можно плотнее. Поставил CC вдвое выше максимума плотности — бросков стало вдвое больше, половина работы в отходы.

Покрути виджет. Сверху видно, какие броски приняты (красные, под графиком) и какие выброшены (серые). Снизу гистограмма принятых ложится на плотность. Подними CC и смотри, как растёт доля отходов.

Метод Неймана: оставляем только то, что под графиком

Верхний график: броски в прямоугольник высотой C = 2.46. Красные легли под график и приняты, серые выброшены. Нижний: гистограмма принятых против плотности.Доля принятых 40.2 % (теория 1/(C·(b−a)) = 40.7 %). В среднем 2.46 броска на одно число — поднимешь C, будет больше отходов.

Метод в коде, на косом бета-распределении B(2,5)B(2, 5) с плотностью 30x(1−x)430x(1-x)^4:

Загрузка редактора…

Расслоённый вариант

Если плотность то высокая, то низкая, один общий прямоугольник выйдет «дырявым» и бросков уйдёт много. Тогда отрезок [a,b][a,b] режут на кусочки Δk\Delta_k, и над каждым ставят свой прямоугольник высотой Ck=max⁡x∈Δkpξ(x)C_k = \max_{x \in \Delta_k} p_\xi(x) — получается ступенчатая «крыша», плотно облегающая график.

Это смесь из §2: плотность раскладывается как pξ(x)=∑kpkfk(x)p_\xi(x) = \sum_k p_k f_k(x), где pk=∫Δkpξ(x) dxp_k = \int_{\Delta_k} p_\xi(x)\,dx. Метод суперпозиции в два хода:

  1. Разыграть номер кусочка k0k_0 с вероятностями pkp_k.
  2. Методом Неймана кидать точки в прямоугольник Δk0×[0,Ck0]\Delta_{k_0} \times [0, C_{k_0}] до первого попадания под график.

В среднем бросков уйдёт ∑kCk∣Δk∣\sum_k C_k |\Delta_k| — площадь ступенчатой крыши. При мелком разбиении она стремится к площади под графиком, то есть к 1: почти без отходов.

Так можно моделировать даже величину с бесконечным носителем. Например, показательную плотность e−xe^{-x} раскладывают на куски [k,k+1)[k, k+1) с весами qkpq^k p, где q=e−1q = e^{-1} — ровно утверждение 3 из главы 4 про целую и дробную части.

А датчик фон Неймана из §3 главы 4 — это тот же метод исключения, только точки кидают не в прямоугольник, а в бесконечномерный куб, и «попадание под график» заменено событием «нисходящая серия оборвалась на чётном месте». Объём этого множества как раз p=1−e−1p = 1 - e^{-1}.

Проверь себя

Тест

Плотность на отрезке [0, 1] не превышает 2, и ты взял прямоугольник высотой C = 2. Сколько бросков в среднем уходит на одно число?
Обновлено