Случайная величина Х может принять значение х1 с вероятностью Р1, значение х2 с вероятностью Р2, …, значение хn с вероятностью Рn. Схематично это показано на рис. 8.
Для моделирования такой случайной величины можно воспользоваться датчиком случайной величины E с равномерным распределением в интервале от 0 до 1. Выданное датчиком значение е последовательно сравнивается следующим образом:
Программа 2 ( исходный файл lect1_2.cpp , выполняемый файл lect1_2.exe )
Необходимо смоделировать случайную величину Х, которая может принимать четыре значения: 1, 27, 29 , 57 со следующими вероятностями:
Р (Х =1) = 0.05, Р (Х =27) = 0.45, Р (Х =29) = 0.49, Р(Х=57) = 0.01.
#define N 500 #include <stdlib.h> #include "model.h" float sl_vel(voi ); float realizasia[500]; void main(void) { int i, n; for(i = 0 ; i < N; i++) realizasia[i] = sl_vel(); Init_graph(); graf_1(" realizasia random ", realizasia , 0, N-1); Close_graph(); } float sl_vel(void) { float x[4] = {1, 27 , 29 , 57 }; float P[3] = { 0.05 , 0.5 , 0.99 }; int i ; float x_vihod , e; e = random( 30000)/30000.; x_vihod = x[3] ; for(i=0 ; i<3 ; i++) { if( e < P[i]) { x_vihod = x[i] ; break ; } } return x_vihod; }