
D. Моделирование распределения случайных
величин
Датчик случайных чисел rand является встроенной функцией системы MATLAB.
При каждом обращении возвращает случайное число из равномерного распределе-
ния на интервале (0,1).
Легко построить функцию, гене-
Рис. 17. Функция отбраковки
рирующую равномерное распреде-
ление на произвольном интервале
[А,В]:
Х=А+(В-А)*rand.
Пусть нужно получить значения
случайной величины Х, распреде-
ленной на интервале [А,В] с плот-
ностью f(X) (рис. 17). Выберем
прямоугольник АВСD, высота ко-
торого Н не меньше максималь-
ного значения функции f(X) на
[А,В].
Будем набрасывать на прямоугольник точки равномерно по его площади и бра-
ковать те из них, которые попадают выше кривой f(X). Значения Х для приня-
тых точек и будут реализовать искомое распределение, т.е получаемые значения
X будут распределены на интервале [A,B] с плотностью f(X).
Участок программы, реализующий этот алгоритм, может выглядеть, например, сле-
дующим образом:
.......................
x=A+(B-A)*rand;
while (f(x) < H*rand)
x=A+(B-A)*rand;
end;
.......................
При этом функция f(X) должна быть описана в смысле функции MATLAB.
При каждом обращении он будет давать значение X из требуемого распределения.
Ясно, что чем больше площадь над кривой f (X), тем реже мы будем браковать
точки. Поэтому лучше всего выбрать Н равным максимальному значению f (X).
Указанный способ позволяет генерировать и многомерные распределения случай-
ных величин.
91