) {//Генерація рівномірно розподіленим величини a + bx, y; = rand ()% (b +1); = rand ()% 2; (y = = 0) return (ax); (a + x);
}
get_triangle (float A, float B, float C) {r_num; float root, right; _num = rand ();// отримання випадкового цілого
// числа = ((float) r_num)/(RAND_MAX +1);// проекція на інтервал (0; 1).
// Константа RAND_MAX = 32767 (215-1) визначена в cstdlib (right <(CA)/(BA)) root = A + sqrt (right * (BA) * (CA)); root = B-sqrt ((1-right) * (BA) * (BC)); (root);
}
get_pareto (float A, float B) {r_num; float root, right; _num = rand ();// отримання випадкового цілого числа = (float) r_num/RAND_MAX +1;// проекція на інтервал (0; 1) = A/(pow (1-right, (float) 1.0/B));// обчислення значення зворотної функції (root);
}
Лістинг програми файл List.h
template // це постійна В«заставкаВ»
// к Класа і функцій
// c парметрізірованним тіпомListNode {: * next;// покажчик на наступний елемент списку * data;// покажчик на дані зберігаються в елементі списку: (Type * d, ListNode ; * n);// конструктор
~ ListNode ();// деструктор * Data ();// метод для читання даних * Next ();// метод для читання покажчика
// на наступний елементPutNext (ListNode * n);// метод для запису покажчика
// на наступний елементPrint ();// друк вмісту елемента списку
}; :: ListNode (Type * d, ListNode * n): next (n), data (d) {
} :: ~ ListNode () {data;
} * ListNode :: Data () {data;
} * ListNode :: Next () {next;
} ListNode :: PutNext (ListNode * n) {= n;
} ListNode :: Print () {> Print ();// предпологается наявність методу Print () для класу
// ім'я якого буде підставлений в призначеному для користувача коді
}
// Опис класу-шаблону завершено, далі йдуть функції-шаблону, що працюють
// не з окремим елементом, а з усіма списком
ListAdd (ListNode * head, ListNode * li) {
// додавання нового елемента li у хвіст списку з головою head * old, * v;
// шукаємо зовнішній хвіст списку (v = head; v! = NULL; v = v-> Next ()) = v;> PutNext (li);// додаємо в слід за знайденим хвостом новий елемент списку
} * ListDelete (ListNode * head, ListNode * li) {