Числа с произвольным законом распределения
Иногда бывает ну очень нужно сгенерировать какое-то число с вероятностью его появления, к примеру, 0.1. Или любым другим законом распределения.
Как поступать в таком случае?
Нам известно, что генераторы случайных и псевдослучайных чисел плются значениями, которые распределены по случайному закону. Но нам-то что до этого?
Нам нужно генерировать X с указанной вероятностью (0.1)
Вспоминаем, что сумма вероятностей всех событий - 1. Отлично. Теперь нам нужно задать вектор значений (среди которых будет и X), где сумма вероятностей появления элементов равна 1.
И дальше нам нужно отобразить этот вектор на некоторый интервал [1, 10^k].
Посмотрим на примере, зачем это надо.
Если вероятность появления числа X := 0.1, а Y := 0.9 (сумма = 1), то нам нужно два вектора значений: от 1 до 1 и от 2 до 10.
Зачем? Мы будем генерировать числа с диапазоне от 1 до 10. С вероятностью 0,1 числа попадут в интервал от 1 до 1 :) и с вероятностью 0,9 - от 2 до 10.
С таким де успехом мы можем взять интервалы [1, 10] и [11, 100] и генерировать числа в диапазоне 1:100. Главное, чтобы максимальное число равнялось 10^k и k было больше или равно максимальному количеству десятичных цифр в вероятностях.