су даних
# define // визначення параметрів моделі та технічних вихідних даних на глобальному рівні, описаної в п.
# define RCLIENTS x1 [discrete (p1)]
float x1 [] = {7,8,9,10,11,12,13,14,15};
float p1 [] = {0.05, 0.05, 0.05, 0.2, 0.2, 0.2, 0.05, 0.05, 0.15};
# define CENA x2 [discrete (p2)]
floatx 1 [] = {10,12,13,14,15,16,17,18,19};
floatp 1 [] = {0.05, 0.05, 0.05, 0.05, 0.05, 0.2, 0.2, 0.2, 0.15};
# defineC (125 * 125 * 125 * 125 * 5) // оголошення мультиплікативного конгруентного методу, яке описується в п.1.3.
# definen 2 // загальне число перукарів
# defineT (8 * 60 * 30) // період моделювання (в хв.)
2. Генерація мультиплікативним конгруентним методом псевдослучайной послідовності чисел:
floatrand (void)// генерація псевдослучайной послідовності з рівномірним розподілом
{
static unsigned long int u = C;
// static - модифікатор для того, щоб локальна змінна u зберігала значення між двома наступними зверненнями до цієї функції
u = u * C;// З - константа
returnu/float (0xfffffffful);// (0xfffffffful) - максимально беззнакові ціле число, задане в шістнадцятковій формі.
}
3. Виклик функцій моделювання:
// функція моделювання показового розподілу, описана в п.1.7.
unsigned int discrete ( float p [])
{
float s, r;
int k = 0;
s = p [];
r = rand ();
while (s
{
k + +;
s + = s + p [k];
}
returnk;
}
4. Ініціалізація
unsigned long int i, j, cost, R, r, n, k;
float t, tin;
m = 0; k = 0; R = 0;
5. Запускпрограмми
tin = RIN;
for (i = 0; i
6. Обработказавершенія
for (j = 0; j
{
m + +;
ton [j] = -1;
}
7. Обробка чергового вхідного події
if (i == tin)
{
j = 0; while ((ton [j]! = -1) && (j
if (j! = N)
{
i = RCLIENTS;
n + +;
for (; t
if (rand1 () <= P)
{
cost = cost + a * CENA;
k + +;
}
} else r + +;
tin = RIN + i;
}
}
8. Виведені результати :
cout <<"........................ Rezultati modelirovaniya .............................. ";
cout <<"1.Posetili parikmakherskuy: "<
cout <<"2.Iz nikh obclujeno: "<
cout <<"3. Iz nikh ne obclujeno: "<...