. Для 32-х розрядного регістра ЕОМ це буде число 5 13 . Нижче приведений вихідний текст процедури генерації зазначеним методом псевдослучайной послідовності чисел, рівномірно розподілених в інтервалі [0,1], і гістограма розподілу, побудована за першій тисячі обчислених за допомогою цієї функції значень.
# define C (125 * 125 * 125 * 125 * 5)
// C = 1220703125ulrand (void)
{unsigned long u = C; = u * C; u/(float (0xFFFFFFFFul) +1);
}
1.7 Моделювання дискретної випадкової величини
Припустимо спочатку, що нам потрібно змоделювати найпростішу дискретну випадкову величину, приймаючу два значення з рівними ймовірностями. Ця випадкова величина моделює викидання жереба або монети. Якщо ми маємо в своєму розпорядженні генератор псевдовипадкових послідовностей, описаний у попередньому параграфі, то завдання може бути вирішена наступним, досить очевидним, способом. Оскільки псевдовипадкове число, одержуване за допомогою функції rand (), розподілено рівномірно в інтервалі (0,1), то однаково ймовірно, чи буде чергове отримане значення належати лівій половині цього інтервалу [0,0.5) або правої [0.5,1]. З цієї причини ми можемо одне з двох значень нашої випадкової величини поставити у відповідність першому з цих двох підінтервалів, а інше - другому, і далі видавати значення залежно від того до якого з цих двох підінтервалів буде належати чергове випало значення генератора rand (). Ця схема, очевидно, легко узагальнюється на дискретну випадкову величину, приймаючу більше двох значень. За кожним значенням ми повинні в цьому випадку "закріпити" деякий підінтервал значень функції rand () з довжиною, рівної ймовірності цього значення модельованої випадкової величини, - причому так, щоб інтервали, закріплені за різними значеннями випадкової величини не перетиналися б між собою. Оскільки сума ймовірностей всіх значень випадкової величини дорівнює одиниці, і такий же діапазон значень, прийнятих псевдослучайной величиною, що генерується функцією rand (), то ці підінтервали повністю покриють діапазон можливих значень, прийнятих випадковою величиною, що генерується функцією rand (). Тепер ми повинні лише щоразу визначати, до якого з безлічі вибраних зазначеним вище спосіб підінтервалів належить чергове видане функцією rand () значення, і видавати відповідне йому значення модельованої дискретної випадкової величини. Формально цей метод може бути представлений в наступному вигляді. Нехай у - випадкова величина, рівномірно розподілена на відрізку [0,1] (у нашому випадку - це результат чергового виконання функції rand ()) і?, - Моделируемая дискретна випадкова величина. Тоді ми видаємо по отриманні чергового значення g випадкової величини? таке значення xi, дискретної випадкової величини?,, для якого вірно подвійне нерівність. Цим вичерпується рішення ...