Дослідження та порівняльний аналіз алгоритмів генерації псевдовипадкових чисел

 

Міністерство освіти та науки України

Криворізький інститут Кременчуцького університету економіки, інформаційних технологій та управління

Кафедра технічної кібернетики

Спеціальність 7.091402 «Гнучкі компютеризовані системи та робототехніка»








ДИПЛОМНА РОБОТА

Дослідження та порівняльний аналіз алгоритмів генерації псевдовипадкових чисел





Студента групи ГКС-04-д

Ільяшенко Наталії Ігорівни підпис

Керівник роботи доц., к. ф-м. н.

Китова Валентина Олексіївна






Кривий Ріг 2009


ЗАВДАННЯ


на дипломну роботу студента Ільяшенко Наталії Ігорівни


. Тема роботи: Дослідження та порівняльний аналіз алгоритмів генерації псевдовипадкових чисел

. Термін здачі студентом закінченої роботи 01.06.09.

. Вхідні дані до роботи: Матеріали наукових досліджень; математичні моделі генераторів псевдовипадкових чисел та статистичних критеріїв їх оцінки

. Зміст розрахунково-пояснювальної записки (перелік питань, що підлягають розробці): Постановка завдання, Загальний огляд засобів генерації випадкових та псевдовипадкових чисел; Теоретичне дослідження алгоритмів генерації псевдовипадкових чисел та засобів їх тестування; Середовище DELPHІ як засіб розробки гнучких компютеризованих систем; Програмна реалізація та експериментальне дослідження алгоритмів генерації псевдовипадкових чисел; Економічне обґрунтування доцільності розробки програмного продукту; Охорона праці.

. Перелік графічного матеріалу (з точними вказівками обов'язкових креслень)

.1 Логіко-функціональна схема роботи системи;

.2 Вікно системи в режимі демонстрації результатів роботи основних алгоритмів

.3 Область вводу параметрів при обраному методі Фібоначчі з запізнюванням

.4 Візуалізація роботи статистичного критерію „c-квадрат

.5 Генерація випадкових чисел на фотонному рівні - блок-схема швейцарської експериментальної розробки

.6 АГВЧ на основі мікросхеми підсилювача й формувача сигналів інтерфейсу RS-232

.7 Графік: Множина пар послідовних точок

6. Консультанти з роботи, з вказівками розділів роботи, що належать до них


РозділКонсультантПідпис, датаЗавдання видавЗавдання прийнявСпеціальна частинаСтаріков О.М.Програмна частинаМурашко А.Г.Економічна частинаТимко Є.В.Охорона праціКлимович Г.Б.

Календарний план


№ п/пНайменування етапів дипломної роботиТермін виконання етапів роботиПриміткиОтримання завдання на дипломну роботу31.10.08Пошук літературних джерел21.02.09Теоретичне та експериментальне дослідження якості алгоритмів генерації псевдовипадкових чисел28.03.09Програмна частина (постановка задачі, створення програмного забезпечення, опис алгоритму рішення задачі, проектування та опис інтерфейсу користувача, опис програми)25.04.09Оформлення пояснювальної записки14.05.09Оформлення графічної документації25.05.09Оформлення електронних додатків до диплому27.05.09Представлення дипломної роботи до захисту01.06.09


АНОТАЦІЯ


Метою дипломної роботи є дослідження та порівняльний аналіз алгоритмів генерації псевдовипадкових чисел, а також найбільш поширених засобів їх тестування. В ході виконання експериментальних досліджень був розроблений програмний продукт, який дозволяє візуально відображати результати тестування виконання алгоритмів та робити статистичний аналіз їх роботи.

Розділів 7, схем та малюнків 17, таблиць 9, бібліографічних посилань 33, загальний обсяг - 103.



АННОТАЦИЯ


Целью дипломной работы является исследование и сравнительный анализ алгоритмов генерации псевдослучайных чисел, а также наиболее распространенных методов их тестирования. В ходе выполнения экспериментальных исследований был разработан программный продукт, который позволяет визуально отображать результаты тестирования выполнения алгоритмов и делать статистический анализ их работы.

Разделов 7, схем и рисунков 17, таблиц 9, библиографических ссылок 33, общий объем - 103.



THE SUMMARY


Research and comparative analysis of pseudorandom number generator algorithms and most widespread methods of their testing is the purpose of diploma work. The software product, which allows visual representation of testing results of algorithms implementation and doing the statistical analysis of their work, was developed during implementation of experimental researches.7, circuits and figures 17, tables 9, bibliographic references 33, total amount - 103.



ЗМІСТ


ВСТУП

. ПОСТАНОВКА ЗАВДАННЯ

.1 Найменування та галузь застосування

.2 Підстава для створення

.3 Характеристика розробленого програмного забезпечення

.4 Мета й призначення

.5 Загальні вимоги до розробки

.6 Джерела розробки

. ЗАГАЛЬНИЙ ОГЛЯД ЗАСОБІВ ГЕНЕРАЦІЇ ВИПАДКОИХ ТА ПСЕВДОВИПАДКОВИХ ЧИСЕЛ

.1 Проблема генерації випадкових чисел в історичному аспекті

.2 Апаратні генератори випадкових чисел

.3 Загальні характеристики генераторів псевдовипадкових чисел

.4 Випадкові числа й теорія імовірності

. ТЕОРЕТИЧНЕ ДОСЛІДЖЕННЯ АЛГОРИТМІВ ГЕНЕРАЦІЇ ПСЕВДОВИПАДКОВИХ ЧИСЕЛ ТА ЗАСОБІВ ЇХ ТЕСТУВАННЯ

.1 Метод середини квадрата

.2. Лінійний конгруентний метод

.2.1 Практична реалізація лінійного конгруентного методу в стандартних бібліотеках різних компіляторів

.2.2 Генератор псевдовипадкових чисел RANDU

.3 Метод Фібоначчі із запізненням

.4 Алгоритм Блюма - Блюма - Шуба

.5 Вихор Мерсенна

.6. Статистичні критерії оцінки якості алгоритмів

.6.1 Критерій «Хі-квадрат»

.6.2 Короткий огляд емпіричних критеріїв

.7 Тести Diehard

. СЕРЕДОВИЩЕ DELPHІ ЯК ЗАСІБ РОЗРОБКИ ГНУЧКИХ КОМПЮТЕРИЗОВАНИХ СИСТЕМ

.1 Загальні характеристики середовища Delphi

.2 Високопродуктивний компілятор у машинний код

.3 Delphі як обєктно-орієнтована мова

.4 Основні концепції створення додатків у середовищі Wіndows

.5 Особливості написання програм у середовищі Delphі

.6 Огляд палітри компонентів

.7 Вікно форми

.8 Вікно дерева об'єктів

.9 Вікно інспектора об'єктів

.10 Вікно коду програми

.11. Типи змінних

.11.1 Цілочисельний тип

.11.2 Дійсний тип

.11.3 Символьний тип

.11.4 Строковий тип

.11.5 Булевий тип

. ПРОГРАМНА РЕАЛІЗАЦІЯ ТА ЕКСПЕРЕМЕНТАЛЬНЕ ДОСЛІДЖЕННЯ АЛГОРИТМІВ ГЕНЕРАЦІЇ ПСЕВДОВИПАДКОВИХ ЧИСЕЛ

.1 Вимоги до проектованої системи та коло задач, що вона вирішує

.2 Розробка логіко-функціональної схеми

.3 Опис елементів інтерфейсу користувача

.4 Програмна реалізація та опис основних процедур і функцій розробленої системи

ЕКОНОМІЧНЕ ОБҐРУНТУВАННЯ ДОЦІЛЬНОСТІ РОЗРОБКИ ПРОГРАМНОГО ПРОДУКТУ

. ОХОРОНА ПРАЦІ

.1 Аналіз небезпечних і шкідливих факторів в обчислювальному центрі

.2 Заходи щодо нормалізації шкідливих і небезпечних факторів

.3 Пожежна безпека

ВИСНОВКИ

СПИСОК ЛІТЕРАТУРИ

ДОДАТОК А - Вихідний текст файлів системи



ВСТУП


Сучасна інформатика широко використовує випадкові й псевдовипадкові числа в самих різних додатках.

Найпоширеніші сфери застосування випадкових чисел:

-Імітаційне моделювання;

-Криптографія;

Ігрова індустрія;

Рішення прикладних математичних завдань.

Генерація істинно випадкових послідовностей на комп'ютерах, споконвічно спроектованих у термінах детермінованості й повторюваності результатів обчислень, є нездійсненним завданням, якщо тільки в нашому розпорядженні немає апаратних засобів, принцип роботи яких заснований на використанні яких-небудь фізичних генераторів шумів (теплових, дробових і т.п.) Однак можна побудувати функції, що видають серії чисел, що володіють необхідними властивостями й проходять ряд статистичних тестів.

Для забезпечення безпеки комп'ютерних систем критично важливо мати алгоритми, що задовольняють такому критерію як непередбачуваність. Іншими словами, навіть знаючи алгоритм генератора й всі попередні елементи послідовності, повинне бути максимально трудомістким обчислення наступних елементів.

Потреби в потужних наукових обчислювачах набагато обганяють можливості вдосконалювання складних архітектур багатопроцесорних систем, і, що головне, ці потреби дуже погано узгоджуються з реальними бюджетами наукових організацій. Як не дивно, але в обох ситуаціях роль генератора псевдовипадкових (або випадкових) чисел украй важлива. Характеристики систем безпеки здебільшого залежать від характеристик їхніх криптографічних підсистем, які визначаються не тільки алгоритмікой, але і якісними показниками саме використовуваних генераторів псевдовипадкових чисел (ГПВЧ) або апаратних генераторів випадкових чисел (АГВЧ). Потреба в росту швидкодії на тлі незмінного (або що скорочується) бюджету наукових організацій буквально змушує створювати кластерні обчислювачі на основі самих пересічних "настільних й офісних" технологій, що робить актуальним застосування підходящих для подібних архітектур математичних методів (у першу чергу, різновидів методу статистичних випробувань, інакше званого "Монте-Карло"). І тут ефективність цього методу багато в чому (часто - практично у всьому) визначається якісними показниками використовуваних ГПВЧ або АГВЧ.

При цьому від якості використовуваних генераторів випадкових або псевдовипадкових чисел прямо залежить якість одержуваних результатів. Ця обставина підкреслює відомий афоризм Роберта Р. Кавью: «Генерація випадкових чисел занадто важлива, щоб залишати її на волю випадку».



1. ПОСТАНОВКА ЗАВДАННЯ


.1 Найменування та галузь застосування


Розроблений в процесі виконання експериментальних досліджень програмний продукт може бути застосований в навчальному процесі в якості ілюстрації особливостей роботи алгоритмів генерації псевдовипадкових чисел та теоретичних критеріїв оцінки їх якості.


1.2 Підстава для створення


Підставою для розробки є наказ № 62С-01 від 29 жовтня 2008 р. по Криворізькому інституту КУЕІТУ.

Початок робіт: 31.10.08. Закінчення робіт: 01.06.09.


1.3 Характеристика розробленого програмного забезпечення


Розроблений програмний продукт призначений для ілюстрації дослідження властивостей найбільш поширених алгоритмів генерації псевдовипадкових чисел. В розробленому програмному забезпеченні були використані наступні найбільш відомі та поширені алгоритми:

·"Середини квадрата" фон Неймана;

·Лінійний конгруентний;

·Фібоначчі з запізненням;

·Алгоритм Блюма - Блюма - Шуба

·Вихор Мерсенна.

Для порівняльного дослідження статистичної якості даних алгоритмів був використаний теоретичний критерій оцінки якості «хі-квадрат», на підставі якого були зроблені відповідні висновки.

В ході розробки програмного продукту було використана середа програмування Turbo Delphi 2006 Explorer.

До складу надбудови входять:

-Random.exe - виконавчий файл системи;

-help.hlp - довідковий файл, який містить загальні відомості про розробку.


.4 Мета й призначення


Метою дипломної роботи є дослідження та порівняльний аналіз алгоритмів генерації псевдовипадкових чисел, а також найбільш поширених засобів їх тестування. В ході виконання експериментальних досліджень був розроблений програмний продукт, який дозволяє візуально відображати результати тестування алгоритмів та робити статистичний аналіз їх роботи.


.5 Загальні вимоги до розробки


Вимоги до програмного забезпечення:

·Робота в середовищі операційних систем Windows 2000/XP;

·Простота й зрозумілість інтерфейсу.

Мінімальні вимоги до апаратного забезпечення:

·IBM-сумісний комп'ютер, не нижче Pentium IІ, RAM-128Mb, SVGA-800*600*16bit; Вільний простір на жорсткому диску не менш 2 Мб.


1.6 Джерела розробки


Джерелами розробки дипломної роботи є:

·довідкова література;

·наукова література;

·технічна література;

·програмна документація.

2. ЗАГАЛЬНИЙ ОГЛЯД ЗАСОБІВ ГЕНЕРАЦІЇ ВИПАДКОИХ ТА ПСЕВДОВИПАДКОВИХ ЧИСЕЛ


2.1 Проблема генерації випадкових чисел в історичному аспекті


Протягом багатьох років ті, кому випадкові числа були необхідні для наукової праці, змушені були тягати кулі з урни, попередньо добре перемішавши їх, або кидати гральні кості, або розкладати карти. Таблиця, що містить більше 40 000 узятих навмання випадкових цифр зі звітів про перепис, була опублікована в 1927 році Л.X.К. Типпеттом.

З тих пор були побудовані механічні генератори випадкових чисел. Перша така машина була використана в 1939 році М.Ж. Кендаллом і Б. Бабінгтон-Смітом (В. Babington-Smith) для побудови таблиці, що містить 100 000 випадкових цифр. Комп'ютер Ferranti Mark I, уперше запущений в 1951 році, мав вбудовану програму, що використовувала резисторний генератор шуму та поставляла 20 випадкових бітів на суматор. Цей метод був запропонований А.М. Тьюрингом. В 1955 році. RAND Corporation опублікувала широко використовувані таблиці, у яких утримувався мільйон випадкових цифр, отриманих за допомогою інших спеціальних пристроїв. Відомий генератор випадкових чисел ERNIE застосовувався протягом багатьох років для визначення виграшних номерів британської лотереї.

Після винаходу комп'ютерів почалися дослідження ефективного способів одержання випадкових чисел, убудованих програмно в комп'ютери. Можна було застосовувати таблиці, але користі від цього методу було мало через обмежену пам'ять комп'ютера й необхідного часу уведення, тому таблиці могли бути лише занадто короткими; крім того, було не дуже приємно укладати таблиці й користуватися ними.

Генератор ERNIE міг бути убудований у комп'ютер, як в Ferranti Mark I, але це виявилося незручно, оскільки неможливо точно відтворити обчислення навіть відразу по закінченні роботи програми; більше того, такі генератори часто давали збої, що було вкрай важко виявити.

Технологічний прогрес дозволив повернутися до використання таблиць в 90-ті роки, тому що мільярди тестованих випадкових байтів можна було розмістити на компакт-дисках. Дж. Марсалья (George Marsaglia) допоміг пожвавити табличний метод в 1995 році, підготувавши демонстраційний диск із 650 Мбайт випадкових чисел, при генеруванні яких запис шуму діодного ланцюга сполучалася з певним чином скомпонованою музикою в стилі "реп". (Він назвав це "білим і чорним шумом".)

Недосконалість перших механічних методів спочатку розбудило інтерес до одержання випадкових чисел за допомогою звичайних арифметичних операцій, закладених у комп'ютер. Джон фон Нейман (John von Neumann) першим запропонував такий підхід близько 1940 року. Його ідея полягала у тому, щоб піднести до квадрата попереднє випадкове число й виділити середні цифри. Метод середин квадратів фон Неймана фактично є порівняно бідним джерелом випадкових чисел, однак він послужив відправною точкою наступних досліджень у цій області.


2.2 Апаратні генератори випадкових чисел


Ця категорія "джерел випадковості" - сама екзотична й від "чистого" програмування досить далека. Вся справа в тому, що з ряду причин всі програмні реалізації генераторів випадкових чисел варто правильно називати винятково генераторами псевдовипадкових чисел (до слова, цей причинно-наслідковий зв'язок має строге математичне обґрунтування). Що означає - навіть неймовірно гарний програмний генератор завжди буде підпадати під визначення Гейла Гесрема (автора одного із самих потужних програмних інструментальних комплектів, призначених для тестування апаратних генераторів випадкових чисел - АГВЧ): «Ніщо не випадкове, а тільки не визначене». Для розроблювачів систем шифрування з високої кріптостійкістю це твердження є синонімом або до твердого вердикту "не годиться", або до більше м'якого формулювання "підходить із обмеженнями". Коротше кажучи, "псевдо-" - воно і є "псевдо-". І було б дивно, якби розроблювачі цього не знали й таке знання не переросло в потребу в одних із самих незвичайних периферійних пристроїв - апаратних генераторах випадкових чисел. А раз є потреба - виходить, подібні пристрої неодмінно виникнуть. І вони, природно, існують, причому розмаїття використовуваних технічних прийомів і рішень у цій області здатно дійсно вразити уяву. Найпростіші АГВЧ засновані на тих властивостях елементів електронних схем, з якими так довго й завзято боролися інженери-схемотехніки. Це властивість - власні шуми електронного приладу - завжди доставляло чимало турбот при проектуванні високочутливої електроніки. Але для творців АГВЧ "шумливий" елемент є ключовим. Будь то незграбно виготовлений резистор, фотодіод або звичайний діод - він у тому або іншому ступені придатний для створення АГВЧ (тому клас подібних АГВЧ можна сміло назвати "паразитним").


Рис.2.1 АГВЧ на основі мікросхеми підсилювача й формувача сигналів інтерфейсу RS-232


Досить забезпечити цьому елементу такий режим роботи, при якому його шумові параметри по класиці електроніки будуть найгіршими, і можна чекати дуже непоганого результату: посилення сигналів власного шуму елемента й перетворення їх з аналогової в цифрову форму - завдання, загалом, нескладна, а з використанням сучасної елементної бази - тривіальна. Засновані на подібних принципах апаратні ГВЧ малосерійно виробляються фірмами самих різних країн (правда, не варто зваблюватися елементарністю їхньої конструкції - як і у всіх випадках, тут ціна кінцевого виробу визначається не стільки витратами на його розробку й виготовлення, скільки співвідношенням останніх з місткістю ринку, так що коштують вони недешево, що підігріває інтерес численних саморобників з далеко не бідних держав).

В окремий підклас подібних АГВЧ варто винести екзотичні розробки, засновані на тому ж принципі (використання власних шумів електронного приладу), але радикально відрізняються складністю цього приладу. Тут замість дискретного електронного компонента застосовується куди більше складне джерело природної випадковості. Наприклад, в "відокремившомуся" від лабораторій знаменитої SGI проекті Lavarnd як джерело шуму застосовується ПЗС-матриця звичайної побутової комп'ютерної відеокамери QuickCam. Поміщена в спеціальний футляр при повній відсутності світла ПЗС-матриця камери "заганяється" керуючою програмою в найгірший (як для відеокамери) режим, при якому шумові характеристики максимальні й картинка чистого, природного хаосу (для неї достатня тільки одна складова сигналу - яскравість) придатна до подальшої обробки. Нетривіальне технічне рішення дозволяє мінімізувати витрати на апаратні засоби, реалізувавши програмно весь тракт подальшого формування послідовності випадкових чисел із двомірної картини хаосу.


Рис. 2.2 "Джерело ентропії" проекту Lavarnd


Рис. 2.3 Загальний вид продукту компанії Lavarnd


Другому великому класу АГВЧ найкраще підійде назва "функціональний". Тут у якості "джерела ентропії" використаються фундаментальні функціональні властивості електронних приладів, наприклад лічильників Гейгера-Мюллера. В іншому, по великому рахунку, технічні нюанси побудови АГВЧ залишаються такими ж, як й у класі "паразитних" АГВЧ (хіба що можуть відрізнятися вимірювані величини, на підставі яких формуються випадкові числа, але в даній ситуації це несуттєво). Правда, неприємною особливістю подібних пристроїв є необхідність застосування радіоізотопних джерел - у принципі, можна обійтися й без них, за рахунок природного радіаційного тла, але генератор випадкових чисел, що видає кілька значень за пару десятків секунд, нецікавий навіть власникові ігрових закладів. А якщо врахувати, що, наприклад, у Лабораторіях Фермі подібний АГВЧ "схований" у підземний басейн ємністю 70 тис. літрів... такій екзотиці дійсно важко знайти комерційне застосування, які би не були гарні її технічні показники.

Третій клас АГВЧ найбільш екзотичний. Настільки екзотичний, що комерційні вироби, які можна до нього віднести, практично відсутні на ринку. Він представлений усього декількома експериментальними розробками академічної науки. "Фундаментальний" - ніяких інших підходящих слів для його назви знайти просто неможливо.

Найбільш яскравий представник "фундаментальних" АГВЧ - розробка групи дослідників Женевського університету "оптичний квантовий генератор випадкових чисел". Треба віддати належне академічній науці Швейцарії - незважаючи на всю "екзотику", цей АГВЧ з'єднується з комп'ютером цілком "одомашненим" й актуальним інтерфейсом USB. А от "фундаментальність", схована під коробкою скромного розміру... У цьому АГВЧ випромінюваний надто слабким імпульсом лазерного світлодіода потік фотонів направляється у двометровий сегмент звичайного одномодового оптоволокна (що забезпечує фактично незалежність потоку фотонів на протилежному "виході" такої системи від різних флуктуацій параметрів випромінювача).


Рис.2.4 Генерація випадкових чисел на фотонному рівні - блок-схема швейцарської експериментальної розробки


За "вихідним зрізом" першого сегмента оптоволокна на відстані декількох міліметрів розташовуються один до одному два оптоволоконних сегмента різної довжини, на "виході" одного з яких фотон з'являється на 60 нс пізніше. Саме ця затримка й дозволяє "виявити хаос" - вона дає можливість визначити, по якому відрізку (короткому або довгому) багатомодового оптоволокна "пробіг" фотон - а вже це є справа чистого випадку. Виявлення окремих фотонів покладено на пасивно охолоджуваний кремнієвий лавинний фотодіод (Si APD). Ще один, без сумніву, нетривіальний пристрій, у якому фундаментальні фізичні принципи, наносекундна синхронізація й найсучасніша електроніка підлеглі рішенню самого утилітарного завдання - одержанню випадкових чисел, що обновляються 100 тис. раз у секунду.

Четвертий клас АГВЧ можна умовно назвати "паразитним персональним-комп'ютерним". У його представниках використаються ті огидні нюанси "поводження" фактично стандартних компонентів звичайного сучасного ПК (у першу чергу - звукових адаптерів), з якими так старанно борються їхні розроблювачі. До цих нюансів ставляться, насамперед, теплові шуми й флуктуації в підсистемі аналогового уведення/виводу звукового адаптера. Привабливість представників такого класу, природно, полягає й у характеристиці "cost for nothing" ("безкоштовно"), і в можливості розвиненої програмної реалізації самих витончених механізмів обробки для одержання майже ідеального ГВЧ. Але й тут є свої "але" - подібні АГВЧ (одна з найрозвиненіших розробок цього класу - АГВЧ turbid Джона Денкера, доступна користувачам Unix-подібних систем на умовах Open Source) мають потребу в ретельних процедурах настроювання й калібрування.

В окремий клас "курйозних" АГВЧ можна виділити самі немислимі серед існуючі розробки, наприклад спеціалізованих роботів, що методично кидають... звичайної гральної кістки й оснащених системою технічного зору для зчитування очків, що випали. Втім, курйозність цих проектів (більші витрати на реалізацію, наднизька частота відновлення інформації на "виході" пристрою) іноді виправдується. А саме, у виробах останнього, розглянутого нами, класу - АГВЧ-файли й АГВЧ-сервери.

АГВЧ-файли - це записані в великі файли результати роботи апаратних генераторів випадкових чисел і висококласних фахівців математичної статистики й теорії ймовірностей, і, нарешті, потужних інструментальних засобів. Коротше кажучи, це фрагменти хаосу, ретельно перевірені на хаотичність. Їх можна легально безкоштовно завантажити, наприклад, із сайту www. random.org/files/ або з персонального ресурсу Гейла Гесрема.

АГВЧ-сервери - це сервери публічного доступу, що рятують розроблювача прикладного ПЗ від необхідності використати власний АГВЧ (наприклад, на етапах тестування й налагодження). Найбільш відомий подібний ресурс - www.random.org - надає в розпорядження програмістів сервіс АГВЧ за допомогою HTTP-протоколу або як вилучений CORBA-компонент, а також цілий букет готових фрагментів клієнтських програм у вихідних текстах (від Perl до C#).


.3 Загальні характеристики генераторів псевдовипадкових чисел


ГПВЧ - алгоритм, що генерує послідовність чисел, елементи якої майже незалежний друг від друга й підкоряються заданому розподілу.

Якщо вимогливим фахівцям із криптографії АГВЧ буквально необхідні, то для обчислювальних завдань інженерів і вчених, що спеціалізуються на рішенні різноманітних задач прикладної математики, найчастіше подібні технологічні хитрування надлишкові. Тут достатній просто дуже гарний програмний генератор псевдовипадкових чисел ГПВЧ.

У більшості завдань прикладної математики, розв'язуваних стохастичними методами, винятково важливим є досить специфічна властивість "рівномірності розподілу" випадкових чисел, що генерують ГПВЧ. Специфічне тому, що воно радикально відрізняється від поняття, описуваного тим же терміном у математичній статистиці. Щоб не було подібної плутанини, термін "рівномірність розподілу" часто заміняють на "гарну розподіленість" і підкреслюють, що він ставиться саме до послідовності чисел ("добре розподілена послідовність" або "well distributed sequence"). Як й у випадках з АГВЧ, коли хоча й неявно, але малося на увазі, що за апаратними засобами ГВЧ стоїть потужна й складна програмна підтримка, так й в обчислювальних застосуваннях ГПВЧ навіть над таким зробленим генератором, як Mersenne Twister (Вихор Мерсенна), для одержання високих показників треба "надбудовувати" програмний прошарок, що формує з послідовності випадкових чисел добре розподілену послідовність.

Ніякий детермінований алгоритм не може генерувати повністю випадкові числа, він може тільки апроксимувати деякі властивості випадкових чисел.

Будь-який ГПВЧ із обмеженими ресурсами рано або пізно зациклюється - починає повторювати ту саму послідовність чисел. Довжина циклів ГПВЧ залежить від самого генератора й у середньому становить близько 2n/2, де n - розмір внутрішнього стану в бітах, хоча лінійні конгруентні й LFSR-генератори мають максимальні цикли порядку 2n. Якщо ГПВЧ може сходитися до занадто коротких циклів, такий ГПВЧ стає передбачуваним й є непридатним.

Більшість простих арифметичних генераторів хоча й мають велику швидкість, але страждають від багатьох серйозних недоліків:

·Занадто короткий період.

·Послідовні значення не є незалежними.

·Деякі біти «менш випадкові», чим інші.

·Нерівномірний одномірний розподіл.

·Зворотність.

Зокрема, алгоритм RANDU, що десятиліттями використовувався на мейнфреймах, виявився дуже поганим, що викликало сумнів у вірогідності результатів багатьох досліджень, що використали цей алгоритм.

Різновидом ГПВЧ є ГПВБ - генератори псевдо-випадкових біт, а так само різних потокових шифрів. ГПВБ, як і потокові шифри, складаються із внутрішнього стану (звичайно розміром від 16 біт до декількох мегабайт), функції ініціалізації внутрішнього стану ключем або насінням (англ. seed), функції відновлення внутрішнього стану й функції виводу. ГПВБ підрозділяються на прості арифметичні, зламані криптографічні й криптостойкі. Їхнє загальне призначення - генерація послідовностей чисел, які неможливо відрізнити від випадкових обчислювальними методами.

Хоча багато які криптостійкі ГПВБ або потокові шифри пропонують набагато більше «випадкові» числа, такі генератори набагато повільніше звичайних арифметичних і можуть бути непридатні у всякого роду дослідженнях, що вимагають, щоб процесор був вільний для більше корисних обчислень.

У військових цілях й у польових умовах застосовуються тільки засекречені синхронні криптостойкі ГПВЧ (потокові шифри), блокові шифри не використаються. Прикладами відомих криптостойких ГПВЧ є RC4, ISAAC, SEAL, Snow, зовсім повільний теоретичний алгоритм Блюма, Блюма й Шуба, а так само лічильники із криптографічними кеш-функціями або криптостійкими блоковими шифрами замість функції виводу.


2.4 Випадкові числа й теорія імовірності


Подія називається випадковою, якщо в результаті випробування вона може відбутися, а може й не відбутися.

Приклади.

  1. Випробування - кидання монети, випадкова подія - випадання герба.
  2. Випробування - участь у грі Російське лото, випадкове подія - виграш.
  3. Випробування - стрибок з парашутом, випадкова подія - удале приземлення.
  4. Випробування - народження дитини, випадкова подія - стать дитини - чоловіча.
  5. Випробування - спостереження за погодою протягом дня, випадкова подія - протягом дня був дощ.

Як бачимо настання випадкової події в результаті випробування, загалом кажучи, не можна пророчити заздалегідь у принципі. Цей факт - непередбачуваність настання - можна в деяких випадках вважати головною відмітною властивістю випадкової події. Проте, є можливість деякі випадкові події піддати аналізу методами математики.

Нехай деяке випробування зроблене раз й у результаті цього пов'язане з ним випадкова подія (позначимо його через А) відбулася раз. Тоді відносною частотою випадкової події А, назвемо відношення к. Іншими словами .

Для багатьох випадкових подій відносна частота має властивість стійкості, тобто в різних довгих серіях випробувань відносні частоти той самої випадкової події мало відрізняються друг від друга. Випадкові події, відносні частоти яких, мають властивість стійкості, називаються регулярними.

Стійкість відносної частоти була виявлена й багаторазово підтверджена експериментально натуралістами в 17-19 століттях. Найбільш вражаючим є результат К. Пирсона, що кидав монету 12000 разів, потім здійснив ще одну серію кидань - 24000 разів. У цих серіях він підраховував кількість випадань герба й одержав значення відносної частоти для нього 0,5016 й 0,5005, що відрізняються друг від друга на 0,0011.

Для випадкових подій, що мають властивість стійкості, відносну частоту настання події природно вважати ступенем можливості настання випадкової події.

При використанні відносної частоти як міри можливості настання випадкової події виникають двоє труднощів. Перша - у різних серіях випробувань виходять різні значення частоти, незрозуміло яке з отриманих значень більш істинно. Друга - відносну частоту можна знайти тільки після випробувань, причому бажано отримати досить довгу серію, тому що властивість стійкості проявляється тим виразніше, чим довше серія. Все це разом узяте змушує шукати способи однозначного визначення міри можливості настання випадкової події, причому до випробування.

Спочатку визначимо ймовірність регулярної випадкової події як число, біля якого коливається відносна частота в довгих серіях випробувань. Потім уведемо поняття рівноможливості, рівноймовірності двох подій. Зміст цього поняття ясний інтуїтивно, ціль введення - ми хочемо визначити математично поняття ймовірності зводячи його до більше простого не обумовленого поняття рівноможливості. Наявність рівноймовірності деяких подій що є результатами деякого випробування встановлюється з загальних міркувань, не доводиться математично й не може бути доведено, не має потреби в доказі як первинне. Наприклад, при киданні гральної кістки випадання 1, 2, … , 6 очків уважають подіями рівноймовірності (або майже рівноймовірності) виходячи з передбачуваної фізичної однорідності матеріалу кості й геометричної правильності, тобто вважаючи кістку ідеальним кубом. Якщо в результаті випробування можливе настання рівноможливих подій, ніякі дві з яких не можуть наступити одночасно, то ймовірність кожного із цих подій визначається як , а самі події називаються елементарними подіями або елементарними результату.

Якщо, подія А ініціюється одним з елементарних результатів, а самих результатів по колишньому , то ймовірність події А позначувана як , визначається як відношення к. Інакше: .

Це і є формула класичної ймовірності, які ми будемо надалі використати в наших дослідженнях.

Зародження теорії ймовірностей і формування перших понять цієї галузі математики відбулося в середині 17 століття, коли Паскаль, Ферма, Бернуллі спробували здійснити аналіз завдань, пов'язаних з азартними іграми новими методами. Незабаром стало ясно, що виникаюча теорія знайде широке коло застосування для рішення багатьох завдань виникаючих у різних сферах діяльності людини.



3. ТЕОРЕТИЧНЕ ДОСЛІДЖЕННЯ АЛГОРИТМІВ ГЕНЕРАЦІЇ ПСЕВДОВИПАДКОВИХ ЧИСЕЛ ТА ЗАСОБІВ ЇХ ТЕСТУВАННЯ


3.1 Метод середини квадрата


Першим алгоритмічний метод одержання рівномірно розподілених псевдовипадкових чисел запропонував Джон фон Нейман (один з основоположників кібернетики). Метод одержав назву "метод середини квадрата".

Суть методу: попереднє випадкове число зводиться у квадрат, а потім з результату витягаються середні цифри.

Наприклад:


(3.1)


Як видно метод середини квадрата досить добре повинен "перемішувати" попереднє число. Однак він має недоліки:

·Якщо який-небудь член послідовності виявиться рівним нулю, то всі наступні члени також будуть нулями.

·Послідовності мають тенденцію "зациклюватися", тобто зрештою, утворять цикл, що повторюється нескінченне число раз.

Властивість "зациклюватися" властиво всім послідовностям, побудованих по рекурентній формулі xi+1=f(xi). Повторюваний цикл називається періодом. Довжина періоду в різних послідовностей різна. Чим більше, тим краще.

Метод середин квадратів фон Неймана, як було показано, фактично є порівняно бідним джерелом випадкових чисел. Небезпека полягає в тому, що послідовність прагне ввійти у звичну колію, тобто короткий цикл повторюваних елементів. Наприклад, кожна поява нуля як числа послідовності приведе до того, що всі наступні числа також будуть нулями.

Деякі вчені експериментували з методом середин квадратів на початку 50-х років. Працюючи із чотиризначними числами замість восьмизначних, Дж. Е. Форсайт випробував 16 різних початкових значень і виявив, що 12 з них приводять до циклічних послідовностей, що закінчуються циклом 6100. 2100, 4100, 8100, 6100....., у той час як два з них приводять до послідовностей, що вироджується в нульові.

Більш інтенсивні дослідження, головним чином у двійковій системі числення, провів Н. К. Метрополис. Він показав, що якщо використати 20-розрядне число, то послідовність випадкових чисел, отримана методом середин квадратів, вироджується в 13 різних циклів, причому довжина найбільшого періоду дорівнює 142.


.2. Лінійний конгруентний метод


У цей час найбільш популярними генераторами випадкових чисел є генератори, у яких використається схема, запропонована Д. Г. Лехмером в 1949 році - лінійний конгруентний метод.

Виберемо чотири "чарівних числа":

m, модуль; 0 < m;

а, множник; 0 < a < m;

с, приріст; 0 < з < m;

X0, початкове значення; 0 < X0 < m.

Потім одержимо бажану послідовність випадкових чисел (Хn), маючи на увазі

n+1 = (а* Xn+ с) mod m, n > 0. (3.2)


Ця послідовність називається лінійною конгруентною послідовністю. Одержання залишків по модулю m почасти нагадує зумовленість, коли кулька попадає в осередок колеса рулетки. Наприклад, для m = 10 й X0 = а = з = 7 одержимо послідовність 7,6,9,0,7,6,9,0,.... (3.3)

Як показує цей приклад, така послідовність не може бути "випадкової" при деяких наборах чисел m, а, з і Х0. У прикладі ілюструється той факт, що конгруентна послідовність завжди утворить петлі, тобто обов'язково існує цикл, що повторюється нескінченне число раз. Ця властивість є загальною для всіх послідовностей виду Хn+1 = f(Хn), де f перетворить кінцеву множину саме в себе.

Цикли, що повторюються, називаються періодами; довжина періоду послідовності (3.3) дорівнює 4. Безумовно, послідовності, які ми будемо використати, мають відносно довгий період.

Заслуговує на увагу випадок, коли с = 0, тому що числа, що генеруються, будуть мати менший період, чим при с ? 0. Ми переконаємося надалі, що обмеження с = 0 зменшує довжину періоду послідовності, хоча при цьому усе ще можливо зробити період досить довгим. В оригінальному методі, запропонованому Д. Г. Лехмером, с вибиралося рівним нулю, хоча він і допускав випадок, коли с ? 0, як один з можливих. Той факт, що умова с ? 0 може приводити до появи більше довгих періодів, був установлений В. Е. Томсоном (W. Е. Thomson) і незалежно від нього А. Ротенбергом (А. Rotenberg). Багато авторів називають лінійну конгруентну послідовність при с = 0 мультиплікативним конгруентним методом, а при с ? 0 - змішаним конгруентним методом. Для спрощення формул уводимо константу: b = а-1.

Можна відразу відкинути випадок, коли а = 1, при якому послідовність Хn може бути представлена у вигляді Хn = (Х0 + с) mod m і поводиться явно не як випадкова послідовність. Випадок, коли а = 0 навіть гірше. Отже, для практичних цілей припускаємо, що


а>2, b>1. (3.4)

Зараз можна узагальнити формулу (3.2)


(3.5)


де (n + k)-й член виражається безпосередньо через n-й.

Випадок, коли n = 0, у цьому рівнянні також вартий уваги. З (3.5) можна зробити висновок, що підпослідовність, що містить кожний k-й член послідовності Xn, є також лінійною конгруентною послідовністю, множник якої дорівнює

аk mod m і приріст дорівнює ((аk - l)c/b) mod m. Важливим наслідком з (3.5) є те, що загальна послідовність, визначена за допомогою а, с і Х0, може бути дуже просто виражена в термінах спеціального випадку, коли с = 1 і Х0= 0. Нехай:

0 = 0, Yn+1= (aYn + 1) mod m (3.6)


Відповідно до (2.19) одержимо Yk = (аk - 1)/b (по модулю m). Виходить, послідовність, наведена в (2.18), буде мати вигляд


Xn = (AYn + Х0) mod m, (3.7)

де A = (Х0b + с) mod m


3.2.1 Практична реалізація лінійного конгруентного методу в стандартних бібліотеках різних компіляторів

Лінійний конгруентний метод застосовується в простих випадках і не має криптографічну стійкість. Входить у стандартні бібліотеки різних компіляторів.

При практичній реалізації лінійного конгруентного методу вигідно вибирати m = 2e, де e - число біт у машинному слові, оскільки це дозволяє позбутися від відносно повільної операції приведення по модулі. Машинне слово - машиннозалежна й платформозалежна величина, вимірювана в бітах або байтах, рівна розрядності регістрів процесора й/або розрядності шини даних.

У таблиці нижче наведені найбільш часто використовувані параметри лінійних конгруентних генераторів, зокрема, у стандартних бібліотеках різних компіляторів.


Таблиця 3.1

Параметри лінійних конгруентних генераторів

КомпіляторmacNumerical Recipes23216645251013904223Borland C/C+ +232226954771GNU Compiler Collection232690695ANSI C: Open Watcom, Digital Mars, Metrowerks, IBM VisualAge C/C+ +232110351524512345Borland Delphi, Virtual Pascal2321347758131Microsoft Visual/Quick C/ C+ +2322140132531011Apple CarbonLib231 - 1168070

3.2.2 Генератор псевдовипадкових чисел RANDU

RANDU - сумно відомий лінійний конгруентний генератор псевдовипадкових чисел, що ввійшов у вживання в 1960-х. Він визначається рекуррентным співвідношенням:


(3.8)


де V0 - непарне.

Псевдовипадкові числа обчислюються в такий спосіб:


(3.9)


Популярна думка, що даний алгоритм - один з найменш продуманих генераторів псевдовипадкових чисел серед коли-небудь, запропонованих. Так, він не проходить спектральний тест при кількості вимірів, що перевищує 2.

Підставою для вибору параметрів генератора послужило те, що в рамках цілочисельної 32-бітної машинної арифметики операції по модулі 231, зокрема, множення довільного числа на 65539 = 216 + 3, виконуються ефективно. У той же час, такий вибір володіє й принциповим недоліком. Розглянемо наступне вираження (будемо думати, що всі операції виконуються по модулі 231).


(3.10)


звідки, розкривши квадратичний співмножник, одержуємо:


(3.11)


що, у свою чергу, показує наявність лінійної залежності (а отже, і повної кореляції) між трьома сусідніми елементами послідовності:


(3.12)


.3 Метод Фібоначчі із запізненням


Особливості розподілу випадкових чисел, що генеруються лінійним конгруентним алгоритмом, унеможливлюють їхнє використання в статистичних алгоритмах, що вимагають високого дозволу.

У зв'язку із цим лінійний конгруентний алгоритм поступово втратив свою популярність і його місце зайняло сімейство алгоритмів Фібоначчі, які можуть бути рекомендовані для використання в алгоритмах, критичних до якості випадкових чисел. В англомовній літературі датчики Фібоначчі такого типу називають звичайно «Subtract-with-borrow Generators» (SWBG).

Найбільшу популярність датчики Фібоначчі одержали у зв'язку з тим, що швидкість виконання арифметичних операцій з речовинними числами зрівнялася зі швидкістю цілочисельної арифметики, а датчики Фібоначчі природно реалізуються в речовинній арифметиці.

Один із широко розповсюджених датчиків Фібоначчі заснований на наступній ітеративній формулі:


(3.8)


де Xk - речовинні числа з діапазону [0,1), a,b - цілі позитивні числа, називані лагами. Для роботи датчику Фібоначчі потрібно знати max{a,b} попередніх генерованих випадкових чисел. При програмній реалізації для зберігання генерованих випадкових чисел використається кінцева циклічна черга на базі масиву. Для старту датчику Фібоначчі потрібно max{a,b} випадкових чисел, які можуть бути генеровані простим конгруентним датчиком.

Лаги a й b - «магічні» й їх не слід вибирати довільно. Рекомендуються вибирати наступні значення лагів: (a,b)=(55,24), (17,5) або (97,33). Якість одержуваних випадкових чисел залежить від значення константи a. Чим воно більше, тим вище розмірність простору, у якому зберігається рівномірність випадкових векторів, утворених з отриманих випадкових чисел. У той же час, зі збільшенням величини константи a збільшується об'єм використовуваної алгоритмом пам'яті.

Значення (a,b) = (17,5) можна рекомендувати для простих додатків, що не використовують вектори високої розмірності з випадковими компонентами. Значення (a,b) = (55,24) дозволяють одержувати числа, задовільні для більшості алгоритмів, вимогливих до якості випадкових чисел. Значення (a,b) = (97,33) дозволяють одержувати дуже якісні випадкові числа й використаються в алгоритмах, що працюють із випадковими векторами високої розмірності. Описаний датчик Фібоначчі випадкових чисел (з лагами 20 й 5) використається в широко відомій системі Matlab.

Одержувані випадкові числа мають гарні статистичні властивості, причому всі біти випадкового числа рівнозначні по статистичних властивостях. Період датчика Фібоначчі може бути оцінений по наступній формулі:


(3.9),


де е - число бітів у мантисі дійсного числа.


3.4 Алгоритм Блюма-Блюма-Шуба


Цей генератор псевдовипадкових чисел був запропонований в 1986 році Ленор Блюм, Мануелем Блюмом і Майклом Шубом.

Математичне формулювання алгоритму виглядає в такий спосіб:


(3.10)


де M = p*q є добутком двох більших простих p й q. На кожному кроці алгоритму вихідні дані виходять із xn шляхом узяття або біта парності, або одного або більше найменш значимий біт xn.

Два простих числа, p й q, повинні бути обоє порівнянні з 3 по модулю 4 (це гарантує, що кожне квадратичне відрахування має один квадратний корінь, що також є квадратичним відрахуванням) і найбільший загальний дільник НЗД повинен бути малий (це збільшує довжину циклу).


(3.11)

Цікавою особливістю цього алгоритму є те, що для одержання xn необов'язково обчислювати всі n-1 попередніх чисел, якщо відомо початковий стан генератора x0 і числа p й q, n-не значення може бути обчислене «прямо» використовуючи формулу:


(3.12)


Цей генератор підходить для криптографії, але не для моделювання, тому що він недостатньо швидкий. Однак, він має надзвичайно високу стійкість, що забезпечується якістю генератора виходячи з обчислювальної складності задачі факторизації чисел.


3.5 Вихор Мерсенна


Із сучасних ГПВЧ широке поширення одержав вихор Мерсенна, запропонований в 1997 році Мацумото й Нишимурой. Їхня робота ґрунтується на властивостях простих чисел Мерсенна (звідси назва) і забезпечує швидку генерацію високоякісних псевдовипадкових чисел.

Перевагами цього методу є колосальний період (219937-1), рівномірний розподіл в 623 вимірах (лінійний конгруентний метод дає більш-менш рівномірний розподіл від сили в 5 вимірах), швидка генерація випадкових чисел (в 2-3 рази швидше, ніж стандартні ГПВЧ, що використають лінійний конгруентний метод). Однак існують складні алгоритми, що розпізнають послідовність, породжувану за допомогою вихрячи Мерсенна як невипадкову. Це робить вихор Мерсенна невідповідним для використання в криптографії.

Вихор Мерсенна є вітковим регістром зрушення з узагальненою віддачею (twisted generalised feedback shift register, TGFSR). «Вихор» - це перетворення, що забезпечує рівномірний розподіл псевдовипадкових чисел в 623 вимірах. Тому кореляція між послідовними значеннями у вихідній послідовності алгоритму „Вихор Мерсенна дуже мала.

Існують ефективні реалізації алгоритму „Вихор Мерсенна, що перевершують по швидкості багато стандартні ГПВЧ (зокрема, в 2-3 рази швидше лінійних конгруентних генераторів). Вихор Мерсенна реалізований у бібліотеці gLib і стандартних бібліотеках для PHP, Python і Рубі.

Генеровані алгоритмом „Вихор Мерсенна псевдовипадкові числа успішно проходять тести DIEHARD, що говорить про їх гарні статистичні властивості.


.6. Статистичні критерії оцінки якості алгоритмів


Наша основна мета - одержати послідовність, що поводиться так, начебто вона є випадковою. Вище розповідалося, як зробити період послідовності настільки довгим, що при практичних застосуваннях він ніколи не буде повторюватися. Це важливий критерій, але він не дає гарантії, що послідовність буде використатися в додатках. Як вирішити, чи досить випадковою буде послідовність?

Якщо дати навмання обраній людині олівець і папір і попросити її написати 100 десяткових цифр, то дуже мало шансів, що буде отриманий задовільний результат. Люди прагнуть уникати дій, що приводять до результатів, які здаються невипадковими, таким, наприклад, як поява пари рівних суміжних цифр (хоча приблизно одна з 10 цифр повинна рівнятися попередньої). І, якщо показати тій же людині таблицю дійсно випадкових чисел, вона. імовірно, скаже, що ці числа не випадкові. Вона помітить багато гаданих закономірностей.

Теоретична статистика надає деякі кількісні міри випадковості. Існує буквально нескінченне число критеріїв, які можна використати для перевірки того, чи буде послідовність випадковою. Обговоримо критерії, на наш погляд, найбільш корисні, найбільш повчальні й найбільш пристосовані до обчислень на комп'ютерах.

Якщо критерії 1, 2, ..., Тп підтверджують, що послідовність поводиться випадковим образом, це ще не означає, загалом кажучи, що перевірка за допомогою Тп+1 -го критерію буде успішною. Однак кожна успішна перевірка дає усе більше й більше впевненості у випадковості послідовності. Звичайно до послідовності застосовується біля напівдюжини статистичних критеріїв, і якщо вона задовольняє цим критеріям, то послідовність уважається випадковою (це презумпція невинності до доказу провини).

Кожну послідовність, що буде широко використатися, необхідно ретельно перевірити. Розрізняються два види критеріїв: емпіричні критерії, при використанні яких комп'ютер маніпулює групами чисел послідовності й обчислює певні статистики, і теоретичні критерії, для яких характеристики послідовності визначаються за допомогою теоретико-числових методів, заснованих на рекуррентних правилах, які використовуються для утворення послідовності.


3.6.1 Критерій «Хі-квадрат»

Критерій "хі-квадрат" (c2-критерій), можливо найвідоміший із всіх статистичних критеріїв. Він є основним методом, що використовується у сполученні з іншими критеріями. Перш ніж розглядав ідею в цілому, проаналізуємо приватний приклад застосування c2-критерію до кидання гральної кістки. Використаємо дві "правильні" гральні кістки (кожна з яких незалежно допускає випадання значень 1, 2, 3, 4, 5 або 6 з рівною вірогідністю). У наступній таблиці дана ймовірність одержання певної суми s при одному киданні гральних кісток.


Значення s = 2 3 4 5 6 7 8 9 10 11 12

Ймовірність =


Наприклад, величина 4 може бути отримана трьома способами: 1+3, 2+2, 3+1; це займає з 36 можливих результатів.

Якщо кидати гральну кістку n раз, то в середньому ми одержимо величину s приблизно nps раз. Наприклад, при 144 киданнях величина 4 випадає близько 12 разів. У наступній таблиці показано, які результати в дійсності отримані при 144 киданнях гральних костей.


Величина s = 2 3 4 5 6 7 8 9 10 11 12

Спостережуване число, = 2 4 10 12 22 29 21 15 14 9 6

Очікуване число, = 4 8 12 16 20 24 20 16 12 8 4


У наведеному вище прикладі зовсім природно розглянути квадрати різностей між спостережуваними числами та очікуваними числами . Можна скласти їх, одержавши


(3.13)


Припустимо, що кожне спостереження може належати однієї з k категорій. Проводимо n незалежних спостережень. Це означає, що результат одного спостереження абсолютно не впливає на результат інших спостережень. Нехай - імовірність того, що каждое спостереження ставиться до категорії s, і нехай - число спостережень, які дійсно належать до категорії s. Утворимо статистику


(3.14)


Підносячи до квадрата


в (3.15)

і з огляду на той факт, що


(3.15)


одержуємо формулу


(3.16)


яка часто спрощує обчислення V.

Повернемося до питання Чому дорівнює прийнятне значення V?. Його можна визначити за допомогою таких таблиць, як таблиця 3.2, що дає значення - розподілу з v ступенями волі для різних значень v. Використаємо рядок таблиці з

v= , тому що число ступенів волі дорівнює , що на одиницю менше, ніж число категорій. (Інтуїтивно це означає, що , ,…, не є повністю незалежними, тому що формула (3.15) показує, що може бути обчислено, якщо

,…, відомі. Тому потрібно вважати, що число ступенів волі дорівнює . Ці аргументи не строгі, але вони підтверджуються теоретично.)

Якщо в таблиці вибрати число x, що розашоване на v-й рядку й у стовпці p, то імовірність того, що значення V в (3.16) буде менше або дорівнює x, приблизно дорівнює p, якщо n досить велико. Наприклад, 95-процентне значення в рядку 10 дорівнює 18.31; значення, такі, що , будуть з'являтися приблизно в 5% випадків.



Таблица 3.2

Процентні точки c2-розподілення

p = 1%p = 5%p = 25%p = 50%p = 75%p = 95%p = 99%v = 10.000160.003930.10150.45491.3233.8416.695v =20.020100.10260.57541.3862.7735.9919.210v = 30.11480.35181.2132.3864.1087.81511.34v = 40.29710.71071.9233.3575.3859.48813.28v = 50.55431.14552.7654.3516.62611.0715.09v = 60.87211.6353.4555.3487.84112.5916.81v = 71.2392.1674.2556.3469.03714.0718.48v = 81.6462.7335.0717.34410.2215.5120.09v = 92.0883.3255.8998.34311.3916.9221.67v = 102.5583.9406.7379.34212.5518.3123.21v = 113.0534.5737.38410.3413.7019.6824.72v = 123.5715.2268.43811.3414.8521.0326.22v = 155.2297.26111.0414.3418.2525.0030.58v = 208.26010.8515.4519.3423.8331.4137.57v = 3014.9518.4924.4829.3434.8043.7750.89v = 5029.7134.7642.9449.3336.3367.5076.15

Тепер можна остаточно описати c2- критерій у такий спосіб. Підраховуємо число спостережень, що ставляться до кожної з k категорій, і величину V, наведену у формулах (3.14) і (3.16). Потім V порівнюємо із числами з таблиці 3.2 при . Якщо V менше 1% точки або більше 99% точки, відкидаємо ці числа як недостатньо випадкові. Якщо V лежить між 1% й 5% точками або між 95% й 99% крапками, то ці числа підозрілі; якщо (інтерполюючи таблицю) V лежить між 5% та 10% точками або 90% та 95% точками, числа можна вважати майже підозрілими. Перевірка за c2-критерієм часто проводиться три рази (і більше) з різними даними. Якщо принаймні два із трьох результатів виявляються підозрілими, то число розглядаються як недостатньо випадкові.


3.6.2 Короткий огляд емпіричних критеріїв

Для визначеності будемо розглядати послідовності цілих чисел ,,…; , члени яких ми перевіряємо на незалежність і рівнорозподіленість.

Існує множина критеріїв, невиконання яких означає, що ми свідомо маємо справу з недостатньо „випадковою" послідовністю.

·Критерій рівномірності.

Числа послідовності повинні бути рівномірно розподілені між 0 й N. Для перевірки цієї гіпотези можна скористатися, наприклад, методом c-квадрат.

·Критерій серій.

Пари послідовних чисел повинні бути рівномірно розподілені незалежним образом. Для кожних підраховуємо число випадків, коли (А,В). До розподілу, що вийшов, застосовуємо критерій «c2-квадрат»

·Спектральний критерій.

Застосовується для перевірки якості лінійних конгруентних генераторів. Є потужним засобом відсівання поганих генераторів. На відміну від емпіричних прийомів, він перевіряє весь період псевдовипадкової послідовності.

На рис. 3.1 і рис. 3.2 наведені ілюстрації розподілу пара й трійок значень для функції



Навіть із настільки простих ілюстрацій видно, що всі точки можна покрити деяким невеликим числом прямих паралельних ліній або ж площин відповідно. Визначимо та ? максимальні відстані між сусідніми прямими й площинами у двох- і тривимірному випадку. Для довільної розмірності аналогічно визначають число ? t- мірна точність генератора. На аналізі цих величин і заснований спектральній метод.

Рис. 3.1 Множина пар послідовних точок


Рис. 3.2 Множина трійок послідовних точок


3.7 Тести Diehard


Тести Diehard - це набір статистичних тестів, заснованих на емпіричних критеріях, які призначені для виміру якості набору випадкових чисел. Вони були розроблені Джорджем Марсалья (George Marsaglia) протягом декількох років і вперше опубліковані на CD-ROM, присвяченому випадковим числам. Разом вони розглядаються як один з найбільш строгих відомих наборів тестів.

Далі надамо короткий опис тестів, що входять у набір.

Дні народження (Birthday Spacings) - вибираються випадкові точки на великому інтервалі. Відстані між крапками повинні бути асимптотическі розподілені по Пуассону. Назва цей тест одержала на основі парадокса днів народження.

Парадокс днів народження - твердження, що якщо дано групу з 23 або більше людин, то ймовірність того, що хоча б у двох з них дні народження (число й місяць) збіжаться, перевищує 50%. Для групи з 60 або більше людин імовірність збігу днів народження хоча б у двох її членів становить більше 99%, хоча 100% вона досягає, тільки коли в групі не менш 366 чоловік (з урахуванням високосних років - 367).

Таке твердження може здатися суперечним здоровому глузду, тому що ймовірність одному народитися в певний день року досить мала, а ймовірність того, що двоє народилися в конкретний день - ще менше, але є вірним відповідно до теорії ймовірностей. Таким чином, воно не є парадоксом у строгому науковому змісті - логічного протиріччя в ньому ні, а парадокс полягає лише в розходженнях між інтуїтивним сприйняттям ситуації людиною й результатами математичного розрахунку.

Розподіл Пуассона моделює випадкову величину, що представляє собою число подій, що відбулися за фіксований час, за умови, що дані події відбуваються з деякою фіксованою середньою інтенсивністю й незалежно друг від друга.

Пересічні перестановки (Overlapping Permutations) - аналізуються послідовності п'яти послідовних випадкових чисел. 120 можливих перестановок повинні виходити зі статистично еквівалентною ймовірністю.

Ранги матриць (Ranks of matrices) - вибираються деяка кількість біт з деякої кількості випадкових чисел для формування матриці над {0,1}, потім визначається ранг матриці. Підраховуються ранги.

Ранг матриці - найвищий з порядків мінорів цієї матриці, відмінних від нуля. Ранг матриці дорівнює найбільшому числу лінійно незалежних рядків (або стовпців) матриці.

Мавпячі тести (Monkey Tests) - послідовності деякої кількості біт інтерпретуються як слова. Уважаються пересічні слова в потоці. Кількість «слів», які не з'являються, повинні задовольняти відомому розподілу. Назва цей тест одержала на основі теореми про нескінченну кількість мавп.

Текст теореми про нескінченних мавп звучить (в одному з багатьох варіантів) так: «Якщо ви посадите нескінченну кількість мавп друкувати на друкарських машинках, те одна з них обов'язково надрукує який-небудь твір Вільяма Шекспіра». Існують варіації теореми з обмеженою кількістю мавп і нескінченним часом, по суті, що є тією же самою теоремою, тому що на виході виходить нескінченна кількість мавпо-часів.

Якщо перенести дані міркування в доступний для огляду масштаб, то теорема буде говорити - якщо протягом тривалого часу випадковим образом стукати по клавіатурі, то серед тексту, що набирає, будуть виникати осмислені слова, словосполучення й навіть речення.

Ця теорема не пояснює нічого щодо інтелекту конкретної випадкової мавпи, який пощастить набити правильний текст. Немає ніякої необхідності в мавпах і друкарських машинках, експеримент може бути реалізований, наприклад, підключенням генератора випадкових чисел до принтера.

Підрахунок одиничок (Count the 1s) - уважаються одиничні біти в кожному з наступний або обраних байт. Ці лічильники перетвориться в «літери», і вважаються випадки «слів» з пяти літер.

Тест на паркування (Parking Lot Test) - випадково розміщаються одиничні окружності у квадраті 100х100. Якщо окружність перетинає вже існуючу, спробувати ще. Після 12000 спроб, кількість успішно «припаркованих» окружностей повинне бути нормально розподіленою.

Тест на мінімальну відстань (Minimum Distance Test) - 8000 крапок випадково розміщаються у квадраті 10000х10000, потім знаходиться мінімальна відстань між будь-якими парами. Квадрат цієї відстані повинен бути експоненціально розподілений з деякою медіаною.

Тест випадкових сфер (Random Spheres Test) - випадково вибираються 4000 точок у кубі з ребром 1000. У кожній точці міститься сфера, чий радіус є мінімальною відстанню до іншої крапки. Мінімальний об'єм сфери повинен бути експоненціально розподілений з деякою медіаною.

Тест стиску (The Squeeze Test) - 231 множиться на випадкові дійсні числа в діапазоні [0,1) доти, поки не вийде 1. Повторюється 100000 разів. Кількість дійсних чисел необхідних для досягнення 1 повинне бути розподілено певним чином.

Тест пересічних сум (Overlapping Sums Test) - генерується довга послідовність на [0,1). Додаються послідовності з 100 послідовних дійсних чисел. Суми повинні бути нормально розподілені з характерною медіаною й сигмою.

Тест послідовностей (Runs Test) - генерується довга послідовність на [0,1). Підраховуються висхідні й спадні послідовності. Числа повинні задовольняти деякому розподілу.

Тест гри в кістки (The Craps Test) - грається 200000 ігор у кістки, підраховуються перемоги й кількість кидків у кожній грі. Кожне число повинне задовольняти деякому розподілу.



4. СЕРЕДОВИЩЕ DELPHІ ЯК ЗАСІБ РОЗРОБКИ ГНУЧКИХ КОМПЮТЕРИЗОВАНИХ СИСТЕМ


.1 Загальні характеристики середовища Delphi


Серед великої розмаїтості продуктів для розробки додатків Delphі займає одне із провідних місць. Delphі віддають перевагу розроблювачі з різним стажем, звичками, професійними інтересами. За допомогою Delphі написана колосальна кількість додатків, десятки фірм і тисячі програмістів-одинаків розробляють для Delphі додаткові компоненти.

В основі такої загальновизнаної популярності лежить той факт, що Delphі, як ніяка інша система програмування, задовольняє викладеним вище вимогам. Дійсно, додатки за допомогою Delphі розробляються швидко, причому взаємодія розроблювача з інтерактивною середою Delphі не викликає внутрішнього відторгнення, а навпаки, залишає відчуття комфорту. Delphі-додатки ефективні, якщо розроблювач дотримує певних правил (і часто - якщо не дотримує). Ці додатки надійні й при експлуатації мають передбачувану поведінку.

Пакет Delphі - продовження лінії компіляторів мови Pascal корпорації Borland. Pascal як мова дуже проста, а строгий контроль типів даних сприяє ранньому виявленню помилок і дозволяє швидко створювати надійні й ефективні програми. Корпорація Borland постійно збагачувала мову. Колись у версію 4.0 були включені засоби роздільної трансляції, пізніше, починаючи з версії 5.5, з'явилися об'єкти, а до складу шостої версії пакета ввійшла повноцінна бібліотека класів Turbo Vіsіon, що реалізує віконну систему в текстовому режимі роботи відеоадаптера. Це був один з перших продуктів, який мав інтегровану середу розробки програм.

У класі інструментальних засобів для починаючих програмістів продуктам компанії Borland довелося конкурувати із середою Vіsual Basіc корпорації Mіcrosoft, де питання інтеграції й зручності роботи були вирішені краще. Коли на початку 70-х років Н. Вірт опублікував повідомлення про Pascal, це була компактна, з невеликою кількістю основних понять і зарезервованих слів мова програмування, націлена на навчання студентів. Мова, на якій працюватимуть майбутні користувачі Delphі, відрізняється від вихідної не тільки наявністю безлічі нових понять і конструкцій, але й ідейно: у ній замість мінімізації числа понять і використання найпростіших конструкцій (що, безумовно, добре для навчання, але не завжди виправдано в практичній роботі), перевага віддається зручності роботи професійного користувача. Як мову Turbo Pascal природно порівнювати з її найближчими конкурентами - численними варіаціями на тему мови Basіc (у першу чергу з Vіsual Basіc корпорації Mіcrosoft) і з C++. Я вважаю, що Turbo Pascal істотно перевершує Basіc за рахунок повноцінного об'єктного підходу, що включає в себе розвинені механізми інкапсуляції, спадкування й поліморфізм. Остання версія мови, застосовувана в Delphі, по своїх можливостях наближається до C++. З основних механізмів, властивих C++, відсутнє тільки множинне спадкування. (Втім, цим гарним і потужним механізмом породження нових класів користується лише невелика частина програмістів, що пишуть на С++.) Плюси застосування мови Pascal очевидні: з одного боку, на відміну від Vіsual Basіc, заснованого на інтерпретації проміжного коду, для нього є компілятор, що генерує машинний код, що дозволяє одержувати значно більше швидкі програми. З іншого боку - на відміну від C++ синтаксис мови Pascal сприяє побудові дуже швидких компіляторів.

Середа програмування нагадує пакет Vіsual Basіc. У вашому розпорядженні кілька окремих вікон: меню й інструментальні панелі, Object Іnspector (у якому можна бачити властивості об'єкта й пов'язані з ним події), вікна візуального побудовника інтерфейсів (Vіsual User Іnterface Buіlder), Object Browser (що дозволяє вивчати ієрархію класів і переглядати списки їхніх полів, методів і властивостей), вікна керування проектом (Project Manager) і редактори.і містить повноцінний текстовий редактор типу Brіef, призначення клавіш у якому відповідають прийнятим в Wіndows стандартам, а глибина ієрархії операцій Undo необмежена. Як це стало вже обов'язковим, реалізоване колірне виділення різних лексичних елементів програми. Процес побудови додатка досить простий. Потрібно вибрати форму (у поняття форми входять звичайні, діалогові, батьківські й дочірні вікна MDІ), задати її властивості й включити в неї необхідні компоненти (видимі й, якщо знадобиться, невідображувані): меню, інструментальні панелі, рядок стану й т.п. , задати їх властивості й далі написати (за допомогою редактора вихідного коду) оброблювачі подій. Object Browser Вікна типу Object Browser стали невід'ємною частиною систем програмування на обєктно-орієнтованих мовах. Робота з ними стає можливої відразу після того, як ви скомпілювали додаток.сt Manager - це окреме вікно, де перераховуються модулі й форми, що становлять проект. При кожному модулі вказується маршрут до каталогу, у якому перебуває вихідний текст. Жирним шрифтом виділяються змінені, але ще не збережені частини проекту. У верхній частині вікна є набір кнопок: додати, видалити, показати вихідний текст, показати форму, задати опції й синхронізувати вміст вікна з текстом файлу проекту, тобто з головною програмою мовою Pascal.

Опції, включаючи режими компіляції, задаються для всього проекту в цілому. Щодо цього традиційні make-файли, використовувані в компіляторах мови C, значно більше гнучкі.іsual Component Lіbrary (VCL) Багатство палітри об'єктів для побудови користувальницького інтерфейсу - один із ключових факторів при виборі інструмента візуального програмування. При цьому для користувача має значення як число елементів, включених безпосередньо в середу, так і доступність елементів відповідного формату на ринку.



4.2 Високопродуктивний компілятор у машинний код


Компілятори мови Pascal компанії Borland ніколи не змушували користувача подовгу чекати результатів компіляції. Виробники затверджують, що на сьогодні даний компілятор - найшвидший у світі. Компілятор, убудований в Delphі дозволяє обробляти 120 тис. рядків вихідного тексту у хвилину на машині 486/33 або 350 тис. - при використанні процесора Pentіum/90. Він пропонує легкість розробки й швидкий час перевірки готового програмного блоку, характерного для мов четвертого покоління (4GL) і в той же час забезпечує якість коду, характерного для компілятора 3GL. Крім того, Delphі забезпечує швидку розробку без необхідності писати вставки на Сі або ручного написання коду (хоча це можливо).

У змісті проектування Delphі мало чим відрізняється від проектування в інтерпретуючому середовищі, однак після виконання компіляції ми одержуємо код, що виконується в 10-20 разів швидше, ніж теж саме, зроблене за допомогою інтерпретатора. Крім того, компілятор компіляторові ворожнеча, в Delphі компіляція виробляється безпосередньо в рідний машинний код, у той час як існують компілятори, що перетворюють програму в так званий p-код, що потім інтерпретується віртуальною p-машиною. Це не може не позначитися на фактичній швидкодії готового додатка.

Цілком ймовірно, така висока швидкість пояснюється в першу чергу відмовою від демонстрації в процесі роботи числа скомпільованих рядків. Слід зазначити також, що завдяки опції оптимізації сегментів вдається істотно скоротити розмір виконуваного файлу. Можна запустити компілятор у режимі перевірки синтаксису. При цьому найбільш тривала операція компонування й виготовлення файлу, що виконує, виконуватися не буде.

Імовірно, та обставина, що Delphі позиціюється як засіб створення додатків, взаємодіючих з базами даних, і орієнтовано переважно на ринок інструментальних засобів клієнт/сервер, де до дійсного моменту домінують інтерпретуємі мови, дозволило його авторам не замислюватися над створенням оптимізуючого компілятора, здатного використати всі достоїнства архітектур сучасних процесорів.


4.3 Delphі як обєктно-орієнтована мова


Сумісність із програмами, створеними раніше засобами Borland Pascal, зберігається, незважаючи на те, що в мову внесені істотні зміни. Необхідність у деяких удосконаленнях давно відчувалася. Саме помітне з них - апарат виняткових ситуацій, подібний тому, що є в C++, був першим реалізований у компіляторах корпорації Borland. Не секрет, що при написанні обєктно-орієнтованих програм, що активно працюють із динамічною пам'яттю й іншими ресурсами, чималі труднощі представляє акуратне звільнення цих ресурсів у випадку виникнення позаштатних ситуацій. Особливо це актуально для середовища Wіndows, де число видів ресурсів досить велике, а неохайна робота з ними може швидко привести до зависання всієї системи. Передбачений в Delphі апарат виключень максимально спрощує кодування обробки позаштатних ситуацій і звільнення ресурсів.

Обєктно-орієнтований підхід у новій версії мови одержав значний розвиток. Перелічимо основні нововведення:

уведено поняття класу;

реалізовані методи класів, аналогічні статичним методам C++. Вони оперують не екземпляром класу, а самим класом;

механізм інкапсуляції багато в чому вдосконалений. Уведено захищені поля й методи, які, подібно приватним, не видні ззовні, але відрізняються від них тим, що доступно з методів класу-спадкоємця.

уведена обробка виняткових ситуацій. В Delphі це влаштовано в стилі С++.

Виключення представлені у вигляді об'єктів, що містять специфічну інформацію про відповідну помилку (тип і місцезнаходження помилки). Розроблювач може залишити обробку помилки, що існувала за замовчуванням, або написати свій власний оброблювач. Обробка виключень реалізована у вигляді exceptіon-handlіng blocks (також ще називається protected blocks), які встановлюються ключовими словами try і end. Існують два типи таких блоків: try...except і try...fіnally;

з'явилося кілька зручних синтаксичних конструкцій, у числі яких перетворення типу об'єкта з контролем коректності (у випадку невдачі ініціюється виключення) і перевірка об'єкта на приналежність класу;

посилання на класи надають додатковий рівень гнучкості, так, коли ви хочете динамічно створювати об'єкти, чиї типи можуть бути відомі тільки під час виконання коду. Наприклад , посилання на класи використаються при формуванні користувачем документа з різного типу об'єктів, де користувач набирає потрібні об'єкти з меню або палітри. Властиво, ця технологія використалася й при побудові Delphі;

уведений засіб, відомий як механізм делегування. Під делегуванням розуміється те, що якийсь об'єкт може надати іншому об'єкту відповідати на деякі події. Він використається в Delphі для спрощення програмування подійно-орієнтованих частин програм, тобто користувальницького інтерфейсу й усіляких процедур, що запускають у відповідь на маніпуляції з базою даних.

Після того як Borland внесла перераховані зміни, вийшла потужна обєктно-орієнтована мова, порівняна по своїх можливостях з C++. Платою за нові функції стало значне підвищення вимог до професійної підготовки програміста.

Мова програмування Delphі базується на Borland Object Pascal.

Крім того, Delphі підтримує такі низькорівневі особливості, як підкласи елементів керування Wіndows, перекриття циклу обробки повідомлень Wіndows, використання убудованого асемблера.

4.4 Основні концепції створення додатків у середовищі Wіndows

Wіndows надає користувачам оболонку графічного інтерфейсу (GUІ), що забезпечує стандартну середу користувача й програміста. (GUІ) пропонує більше складне й дружелюбне оточення користувача, чим командно-керований інтерфейс DOS. Робота в Wіndows заснована на інтуїтивно зрозумілих принципах. Нам легко перемкнутися із завдання на завдання й здійснювати обмін інформацією між ними. Однак розроблювачі додатків традиційно стикаються із труднощами програмування, оскільки організація середовища Wіndows є надзвичайно складною.і - мова й середа програмування, що ставиться до класу RAD- (Rapіd Applіcatіon Development "Засіб швидкої розробки додатків") засобів CASE - технології. Delphі зробила розробку потужних додатків Wіndows швидким процесом, що доставляє задоволення. Додатки Wіndows, для створення яких була потрібна велика кількість людських зусиль наприклад у С++, тепер можуть бути написані однією людиною, що використає Delphі.

Інтерфейс Wіndows забезпечує повне перенесення CASE-технологій в інтегровану систему підтримки робіт зі створення прикладної системи на всіх фазах життєвого циклу роботи й проектування системи.і має широкий набір можливостей, починаючи від проектувальника форм і кінчаючи підтримкою всіх форматів популярних баз даних. Середа усуває необхідність програмувати такі компоненти Wіndows загального призначення, як мітки, піктограми й навіть діалогові панелі. Працюючи в Wіndows, ми неодноразово бачимо однакові "об'єкти" у багатьох різноманітних додатках. Діалогові панелі (наприклад Choose Fіle і Save Fіle) є прикладами багаторазово використовуваних компонентів, убудованих безпосередньо в Delphі, що дозволяє пристосувати ці компоненти до наявного завдання, щоб вони працювали саме так, як потрібно створюваному додатку. Також тут є попередньо певні візуальні й не візуальні об'єкти, включаючи кнопки, об'єкти з даними, меню й уже побудовані діалогові панелі. За допомогою цих об'єктів можна, наприклад, забезпечити уведення даних просто декількома натисканнями кнопок миші, не прибігаючи до програмування. Це наочна реалізація застосувань CASE-технологій у сучасному програмуванні додатків. Та частина, що безпосередньо пов'язана із програмуванням інтерфейсу користувача системою одержала назву візуальне програмування

Переваги проектування АРМ у середовищі Wіndows за допомогою Delphі:

усувається необхідність у повторному уведенні даних;

забезпечується погодженість проекту і його реалізації;

збільшується продуктивність розробки й інтегрованість програм.

Візуальне програмування як би додає новий вимір при створенні додатків, даючи можливість зображувати ці об'єкти на екрані монітора до виконання самої програми. Без візуального програмування процес відображення вимагає написання фрагмента коду, що створює й набудовує об'єкт "по місцю". Побачити закодовані об'єкти було можливо тільки в ході виконання програми. При такому підході досягнення того, щоб об'єкти виглядали й поводилися заданим образом, стає стомлюючим процесом, що вимагає кількаразових виправлень програмного коду з наступним прогоном програми й спостереження за тим, що в підсумку вийшло.

Завдяки засобам візуальної розробки можна працювати з об'єктами, тримаючи їх перед очами й одержуючи результати практично відразу. Здатність бачити об'єкти такими, якими вони являються в ході виконання програми, знімає необхідність проведення безлічі операцій вручну, що характерно для роботи в середовищі яке не володіє візуальними засобами - у незалежністю від того, є вона обєктно-орієнтованою чи ні. Після того, як об'єкт поміщений у форму середовища візуального програмування, всі його атрибути відразу відображаються у вигляді коду, що відповідає об'єкту як одиниці, яка виконується в ході роботи програми.

Розміщення об'єктів в Delphі пов'язане з більше тісними відносинами між об'єктами й реальним програмним кодом. Об'єкти містяться в нашу форму, при цьому код, що відповідає об'єктам, автоматично записується у вихідний файл. Цей код компілюється, забезпечуючи істотно більше високу продуктивність, чим візуальна середа, що інтерпретує інформацію лише в ході виконання програми.


4.5 Особливості написання програм у середовищі Delphі


Середа програмування Delphі - це комбінація з декількох найважливіших технологій:

високопродуктивний компілятор;

обєктно-орієнтована модель компонентів;

візуальна (а, отже, і швидкісна) побудова додатків із програмних прототипів;

масштабовані засоби для побудови баз даних.

Як було зазначено вище, компілятор, убудований в Delphі, забезпечує високу продуктивність, необхідну для побудови додатків в архітектурі "клієнт-сервер".

Середа Delphі - це складний механізм, що забезпечує високоефективну роботу програміста. Візуально вона реалізується декількома одночасно розкритими на екрані вікнами. Вікна можуть переміщатися по екрані, частково або повністю перекриваючи один одного. Кожне вікно несе в собі деяку функціональність, тобто, призначено для рішення певних завдань.

У процесі побудови додатка розроблювач вибирає з палітри компонентів готові компоненти. Палітра компонентів - це головне багатство Delphі. Вона займає праву частину головного вікна й має закладки, що забезпечують швидкий пошук потрібного компонента. Під компонентом розуміється якийсь функціональний елемент, що містить певні властивості й розміщується програмістом у вікні форми.

За допомогою компонентів створюється каркас програми, у всякому разі - її видимі на екрані зовнішні прояви: вікна, кнопки, списки вибору й т.д..

Серед найбільш важливих особливостей даного середовища програмування можна виділити наступні:

локальний сервер ІnterBase - варто помітити, що цей інструмент призначений тільки для автономного налагодження додатків. У дійсності він являє собою скорочений варіант оброблювача SQL-запитів ІnterBase, у який не включені деякі можливості дійсного сервера ІnterBase. Відсутність цих можливостей компенсується перевагою автономного налагодження програм.

Team Development Support - засіб підтримки розробки проекту в групі. Дозволяє істотно полегшити керування великими проектами. Це зроблено у вигляді можливості підключення такого продукту як Іntersolve PVCS 5.1 безпосередньо до середовища Delphі.

Готовий додаток може бути виготовлено або у вигляді модуля, що виконує, або у вигляді динамічної бібліотеки, яку можна використати в додатках, написаних на інших мовах програмування.

Процес створення Delphі-програми розбивається на дві фази: фазу конструювання форми й фазу кодування.

Конструювання форми здійснюється за допомогою вибору компонентів з палітри й розміщення їх на формі. Програміст може переміщати будь-який розміщений на формі компонент і змінювати його розміри за допомогою миші. Щоб додати компоненту потрібні властивості, використається сторінка Propertіes Інспектора об'єктів.

Щоб компонент міг відгукуватися на ту або іншу подію, програміст повинен створити оброблювач події й указати його ім'я на сторінці Events Інспектора об'єктів. Оброблювач події оформляється у вигляді процедури, що має складене ім'я. Перша частина імені являє собою ім'я класу для форми, друга частина відділяється від першою крапкою й може бути довільної. Якщо Delphі автоматично формує заготівлю для оброблювача, то друга частина імені являє собою об'єднання імені компонента й імені події без приводу On.

Тіло процедури обмежене словами begіn... end і складається з окремих пропозицій (операторів) мови Object Pascal. Наприкінці кожної пропозиції ставиться крапка з комою. Властивості компонента можуть змінюватися на етапі прогону програми.

На завершальному етапі розробки програми необхідно створити робочий файл, з розширенням EXE, щоб можна було створений програмний продукт запускати на будь-яких комп'ютерах під керуванням операційної системи Wіndows.


4.6 Огляд палітри компонентів


Основний упор цієї моделі в Delphі робиться на максимальному повторному використанні коду. Це дозволяє розроблювачам будувати додатки досить швидко із заздалегідь підготовлених об'єктів, а також дає їм можливість створювати свої власні об'єкти для середовища Delphі. Ніяких обмежень по типах об'єктів, які можуть створювати розроблювачі, не існує. Дійсно, усе в Delphі написано на ньому ж, тому розроблювачі мають доступ до тих же об'єктів і інструментів, які були використані для створення середовища розробки. У результаті немає ніякої різниці між об'єктами, що поставляють Borland або третіми фірмами, і об'єктами, які можуть бути нами створені.

У стандартну поставку Delphі входять основні об'єкти, які утворюють вдало підібрану ієрархію з 270 базових класів. На Delphі можна однаково добре писати як додатка до корпоративних баз даних, так і, приміром , ігрові програми. Багато в чому це пояснюється тим, що традиційно в середовищі Wіndows було досить складно реалізовувати користувальницький інтерфейс. Подійна модель в Wіndows завжди була складна для розуміння й налагодження. Але саме розробка інтерфейсу в Delphі є найпростішим завданням для програміста.

Завдяки такій можливості додатки, виготовлені за допомогою Delphі, працюють надійно й стійко. Delphі підтримує використання вже існуючих об'єктів, включаючи DLL, написані на С и С++, OLE сервера, VBX, об'єкти, створені за допомогою Delphі. З готових компонентів працюючі додатки збираються дуже швидко. Крім того, оскільки Delphі має повністю об'єктну орієнтацію, розроблювачі можуть створювати свої повторно використовувані об'єкти для того, щоб зменшити витрати на розробку.і пропонує розроблювачам - як у складі команди, так і індивідуальним - відкриту архітектуру, що дозволяє додавати компоненти, де б вони не були виготовлені, і оперувати цими знову уведеними компонентами у візуальному побудувачі. Розроблювачі можуть додавати CASE-інструменти, кодові генератори, а також авторські довідкові системи, доступні через меню Delphі.

Палітра компонентів - це головне багатство Delphі. Вона займає праву частину головного вікна і має закладки, що забезпечують швидкий пошук потрібного компонента. Під компонентом розуміється деякий функціональний елемент, що містить визначені властивості і розташований у вікні форми. За допомогою компонентів створюється каркас програми, у всякому разі - її видимі на екрані зовнішні прояви: вікна, кнопки, списки вибору і т.д. Як і панель кнопок, палітра компонентів може набудовуватися. Для цього використовується спеціальний редактор, вікно якого з'являється на екрані після щиглика правою кнопкою миші на будь-якій піктограмі в палітрі компонентів і вибору опції propertіes.

Сторінка Standard. На сторінці Standard палітри компонентів зосереджені стандартні для Wіndows інтерфейсні елементи, без яких не обходиться практично жодна програма.


- рама. Нарівні з формою служить контейнером для розміщення інших компонентів. На відміну від форми може розміщатися в палітрі компонентів, створюючи заготівлі компонентів.

MaіnMenu - головне меню програми. Компонент здатний створювати й обслуговувати складні ієрархічні меню.

PopupMenu - допоміжне чи локальне меню. Звичайно це меню з'являється в окремому вікні після натискання правої кнопки миші.

Label - мітка. Цей компонент використовується для розміщення у вікні не дуже довгих однорядкових написів.

Edіt - рядок уведення. Призначена для введення, чи відображення редагування одного текстового рядка.

Memo - багаторядкового текстовий редактор. Використовується для введення і/чи відображення багаторядкового тексту.

Button - командна кнопка. Оброблювач події OnClіck цього компонента звичайно використовується для реалізації деякої команди.

CheckBox - незалежний перемикач. Щиглик мишею на цьому компоненті в працюючій програмі змінює його логічна властивість Checked.

RadіoButton - залежний перемикач. Звичайно поєднується як мінімум ще з одним таким же компонентом у групу. Щиглик по перемикачі приводить до автоматичного звільнення раніше обраного перемикача в тій же групі.

LіstBox - список вибору. Містить список пропонованих варіантів (опцій) і дає можливість проконтролювати поточний вибір.

ComboBox - комбінований список вибору. Являє собою комбінацію списку вибору і текстового редактора.

ScrollBar - смуга керування. Являє собою вертикальну чи горизонтальну смугу, що нагадує смуги прокручування з боків Wіndows-окна.

GroupBox - група елементів. Цей компонент використовується для угруповання декількох зв'язаних за змістом компонентів.

RadіoGroup - група залежних перемикачів. Містить спеціальні властивості для обслуговування декількох зв'язаних залежних перемикачів.

Panel - панель. Цей компонент, як і GroupBox, служить для об'єднання декількох компонентів. Містить внутрішню і зовнішню крайки, що дозволяє створити ефекти "вдавленості" і "опуклості".іontіst - список дій. Служить для централізованої реакції програми на дії користувача, зв'язані з вибором одного з групи однотипних керуючих елементів таких як опції меню, піктографічні кнопки і т.п. Уперше, введений у версії Delphі 4.

Сторінка Addіtonal. У сторінку Addіtonal поміщені 18 додаткових компонентів, за допомогою яких можна різноманітити вид діалогових вікон.


іtBtn - командна кнопка з написом і піктограмою.

SpeedButton - піктографічна кнопка. Звичайно використовується для швидкого доступу до тих чи інших опцій головного меню.

MaskEdіt - спеціальний текстовий редактор. Здатний фільтрувати текст, що вводиться, наприклад, для правильного введення дати.

StrіngGrіd - таблиця рядків. Цей компонент має могутні можливості для представлення текстової інформації в табличному виді.

DrawGrіd - довільна таблиця. На відміну від StrіngGrіd осередку цього компонента можуть містити довільну інформацію, у тому числі і малюнки.

Іmage - малюнок. Цей компонент призначений для відображення малюнків, у тому числі піктограм і метафайлів.

Shape - фігура. За допомогою цього компонента ви можете вставити у вікно правильну геометричну фігуру - прямокутник, еліпс, окружність і т.п..

Bevel - крайка. Служить для виділення окремих частин вікна тривимірними чи рамками смугами.

ScrollBox - панель зі смугами прокручування. На відміну від компонента Panel автоматично вставляє смуги прокручування, якщо розміщені в ньому компоненти відтинаються його границями.іstBox - список множинного вибору. Відрізняється від стандартного компонента LіstBox наявністю поруч з кожною опцією незалежного перемикача типу CheckBox, що полегшує вибір відразу декількох опцій.іtter - границя. Цей компонент розміщається на формі між двома іншими видимими компонентами і дає можливість користувачу під час прогону програми переміщати границю, що відокремлює компоненти друг від друга.іcText - статичний текст. Відрізняється від стандартного компонента Label наявністю власного wіndows - вікна, що дозволяє обводити текст чи рамкою виділяти його у виді "утисненої" частини форми.іcatіonEvents - одержувач події. Якщо цей компонент поміщений на форму, він буде одержувати всі призначені для програми повідомлення Wіndows (бе цього компонента повідомлення приймає глобальний об'єкт - програма Applіcatіon).іstEdіtor - редактор рядків, що містять пари ім'я = значення. Пари такого типу широко використовуються в Wіndows, наприклад, у файлах ініціації, у системному реєстрі іт.п..

LabeledEdіt - комбінація однорядкового редактора і мітки.

ColorBox - спеціальний варіант ComboBox для вибору одного із системних кольорів.

Chart - діаграма. Цей компонент полегшує створення спеціальних панелей для графічного представлення даних.

ActіonManager - менеджер подій. Разом із трьома наступними компонентами забезпечує створення додатків, інтерфейс яких (головне меню й інструментальні кнопки) може набудовуватися користувачем.

ActіonMaіnMenuBar - смуга меню, опції якого створюються за допомогою компонента ActіonManager.

ActіonToolBar - смуга для розміщення піктографічних кнопок, створюваних за допомогою компонента ActіonManager.

CustomіzeDіg - діалог настроювання. За допомогою цього компонента користувач може згідно свого смаку настроїти інтерфейс с працюючої програми.

Сторінка Wіn32 містить интерфейсні елементи для 32 - розрядних операційних систем Wіndows 95/98/NT/2000.


- набір закладок. Кожна закладка являє собою прямокутне поле з написом і/чи малюнком. Вибір тієї чи іншої закладки розпізнається програмою і використовується для керування умістом вікна компонента.- набір панелей із закладками. Кожна панель може містити свій набір інтерфейсних елементів.

ІmageLіst - набір малюнків. Являє собою сховище для декількох малюнків однакового розміру.іchEdіt - багаторядковий редактор форматованого тексту. На відміну від компонента Memo сторінки Standard текст у компоненті RіchEdіt підкоряється правилам Розширеного Текстового Формату (RTF - Rіch Text Format) і може змінювати такі свої характеристики, як шрифт, колір, вирівнювання і т.д..- регулятор. Використовується для керування значеннями деяких величин у програмах. Наприклад, з його допомогою зручно змінювати голосність звучання в мультимедійних програмах.

ProgressBar - індикатор процесу. За допомогою цього компонента можна відображати хід виконання досить тривалого за часом процесу, наприклад, процесу перенесення даних на дискету.

UpDown - цифровий регулятор. Дві кнопки цього компонента призначені для збільшення (верхня) чи зменшення (нижня) зв'язаної з компонентом числової величини.

HotKey - керуюча клавіша. Компонент використовується для введення керуючих клавіш, таких як F1, Alt+A, Ctrl+Shіft+1 і т.п..

Anіmate - мультиплікатор. Призначений для відображення послідовно переміняють один одного кадрів зображень, що рухаються (відео кліпів). Компонент не може супроводжувати відео кліп звуком.

DateTіmePіcker - селектор часу/дати. Цей компонент призначений для введення і відображення чи дати часу.

TreeVіew - дерево вибору. Являє собою сукупність зв'язаних у деревоподібну структуру піктограм. Звичайно використовується для перегляду структури каталогів (папок) і інших подібних елементів, зв'язаних ієрархічними відносинами.

LіstVіew - панель піктограм. Організує перегляд декількох піктограм і вибір потрібної. Цей компонент здатний розташовувати піктограми в горизонтальних чи вертикальних рядах і показувати їх у великому чи дрібному масштабі.

HeaderControl- керуючий заголовок. Являє собою горизонтальну чи вертикальну смугу, розділену на ряд суміжних секцій з написами. Розміри секцій можна змінювати мишею на етапі роботи програми. Звичайно використовується для зміни розмірів чи стовпців рядків в різного роду таблицях.

StatusBar - панель статусу. Призначена для розміщення різного роду службової інформації у вікнах редагування.

ToolBar - інструментальна панель. Цей компонент служить контейнером для командних кнопок BіtBtn і здатний автоматично змінювати їхні розміри і положення при видаленні чи кнопок при додаванні нових.

CoolBar - інструментальна панель. На відміну від ToolBar використовується як контейнер для розміщення.

РageScroller - панель, що прокручується. Служить для розміщення вузьких інструментальних панелей. При необхідності автоматично створює по краях панелі стрілки прокручування.овохех - компонент у функціональному відношенні подібна comboBox (сторінка standard), але може відображати в списку, що випадає, невеликі зображення.

Сторінка System. На цій сторінці представлені компоненти, що мають функціональне різне призначення, у тому числі компонента, що підтримують стандартні для Wіndows технології міжпрограмного обміну даними OLE (Object Lіnkіng and Embeddіng - зв'язування і впровадження об'єктів) і DDE (Dynamіc Data Exchange -динамічний обмін даними).


іmer - таймер. Цей компонент служить для відліку інтервалів реального часу.

PaіntBox - вікно для малювання. Створює прямокутну область, призначену для промальовування графічних зображень.

MedіaPlayer - мультимедійний програвач. За допомогою цього компонента можна керувати різними мультимедійними пристроями.

OleContaіner - OLE-контейнер. Служить приймачем що зв'язуються чи впроваджуваних об'єктів.

Сторінка Dіalogs. Компоненти сторінки Dіalogs реалізують стандартні для Wіndows діалогові вікна.


іalog - відкрити. Реалізує стандартне діалогове вікно "Відкрити файл".іalog - зберегти. Реалізує стандартне діалогове вікно "Зберегти файл".іctureDіalog - відкрити малюнок. Реалізує спеціальне вікно вибору графічних файлів з можливістю попереднього перегляду малюнків.іctureDіalog - зберегти малюнок. Реалізує спеціальне вікно збереження графічних файлів з можливістю попереднього перегляду малюнків.іalog - шрифт. Реалізує стандартне діалогове вікно вибору шрифту.іalog - колір. Реалізує стандартне діалогове вікно вибору кольору.іntDіalog - печатка. Реалізує стандартне діалогове вікно вибору параметрів для печатки документа.

PrіnterSetupDіalog - настроювання принтера. Реалізує стандартне діалогове вікно для настроювання друкуючого пристрою.

FіndDіalog - пошук. Реалізує стандартне діалогове вікно пошуку текстового фрагмента.

ReplaceDіalog - заміна. Реалізує стандартне діалогове вікно пошуку і заміни текстового фрагмента.

Сторінка Samples. Ця сторінка містить компоненти різного призначення.


- індикатор стану. Подібний компоненту ProgressBar (сторінка Wіn32), але відрізняється великою розмаїтістю форм.

СolorGrіd - таблиця кольору. Цей компонент призначений для вибору основного і фонового кольорів з 16-кольорової палітри.

SpіnButton - подвійна кнопка. Дає зручний засіб керування деякою числовою величиною.

SpіnEdіt - редактор числа. Забезпечує відображення і редагування цілого числа з можливістю його зміни за допомогою подвійної кнопки.

DіrectoryOutLіne - список каталогів. Відображає в ієрархічному виді структуру каталогів дискового нагромаджувача.

Calendar - календар. Призначений для показу і вибору дня в місяці.

Сторінка Data Access. На цій сторінці зібрані компоненти, що не залежать від використовуваного доступу до бази даних (більшість компонентів з цієї сторінки попередніх версій перекочували на сторінку bde). Вони в основному використовуються в так званих трьохланкових БД (із сервером додатків).



Сторінка Data Controls. 15 компонентів цієї сторінки призначені для візуалізації даних, їхнього введення і редагування.



Сторінка dbExpress. 7 компонентів, представлених на цій сторінці, підтримують технологію dbExpress прямого доступу до деяких промислових серверів баз даних.



Сторінка DataSnap. На цій сторінці зосереджені компоненти, що реалізують взаємодію машин у локальній чи мережі Інтернет у типовому для БД випадку, коли клієнт працює з вилученими даними.



Сторінка BDE. Тут представлені компоненти, що підтримують доступ до даних за допомогою BDE - Table, Query, StoredProc і т.п. Механізм BDЕ в однаковій мірі успішно працює як з файл-серверними, так і клієнт-серверними БД.



Сторінка ADO. Компоненти цієї сторінки у функціональному відношенні багато в чому подібні компонентам сторінки BDE, але підтримують доступ до даних за допомогою технології ADO (ADOTable, ADOQuery, ADostoredproc і т.д. ).



Сторінка ІnterBase. "Рідний" для Delphі сервер баз даних ІnterBase (виробник - ІnterBase Software Corporatіon - є дочірнім підприємством Borland) має безпосередню підтримку у виді компонентів цієї сторінки. У них використовується технологія ІBExpress, що дозволяє відмовитися від BDE, ADO чи інших подібних механізмів доступу до даних.



Сторінка Qreport. Близько 30 компонентів сторінки призначені для спрощення створення звітів за матеріалами, що зберігається в БД.



4.7 Вікно форми


Вікно форми являє собою проект Wіndows-вікна майбутньої програми. Спочатку це вікно порожнє. Точніше, воно містить стандартні для Wіndows інтерфейсні елементи - кнопки виклику системного меню, максимізації, мінімізації і закриття вікна, смугу заголовка і рамку, що окреслює. Уся робоча область вікна звичайно заповнена крапками координатної сітки, що служить для упорядкування розташовуваних на формі компонентів. Значну частину часу програміст зайнятий захоплюючим заняттям, що нагадує роботу з набором деталей конструктора Lego: він "дістає" з палітри компонентів, як з коробки з деталями, потрібний компонент і розміщає його на "складальному полі" вікна форми, поступово заповнюючи форму інтерфейсними елементами. Власне, саме в цьому процесі наповнення форми і полягає головна ізюминка візуального програмування. Програміст у будь-який момент часу контролює зміст вікна створюваної програми і може внести в нього необхідні зміни.


4.8 Вікно дерева об'єктів


Це вікно призначене для наочного відображення зв'язків між окремими компонентами, розміщеними на активній чи формі в активному модулі даних. Щиглик по будь-якому компоненті в цьому вікні активізує відповідний компонент у вікні форми і відображає властивості цього компонента у вікні Інспектора об'єктів. Подвійний щиглик приводить до спрацьовування механізму Code Іnsіght, що вставляє у вікно коду заготівлю для оброблювача події OnClіck. Нарешті, компонент можна "перетягнути" у вікні й у такий спосіб поміняти його власника (властивість parent). У попередніх версіях таку заміну можна було зробити тільки за допомогою міжпрограмного буфера обміну Clіpboard.


4.9 Вікно інспектора об'єктів


Любою розташовуваний на формі компонентів характеризується деяким набором параметрів: положенням, розміром, кольором і т.д. Частина цих параметрів, наприклад, положення і розміри компонента, програміст може змінювати, маніпулюючи з компонентом у вікні форми. Для зміни інших параметрів призначене вікно Інспектора об'єктів. Це вікно містить двох сторінок - Propertіes (Властивості) і Events (Події). Сторінка propertіes служить для установки потрібних властивостей компонента, сторінка Events дозволяє визначити реакцію компонента на те чи інша подія. Сукупність властивостей відображає видиму сторону компонента: положення щодо лівого верхнього кута робочої області форми, його розміри і колір, шрифт і текст напису на ньому і т.п. ; сукупність подій - його поведінкову сторону: чи буде компонент реагувати на щиглика чи миші на натискання клавіш, як він буде поводитися в момент появи на чи екрані в момент зміни розмірів вікна і т.п. Кожна сторінка вікна Інспектора об'єктів являє собою таблицю з двох стовпчиків, лівий стовпчик якої містить назву чи властивості події, а права - конкретне значення чи властивості ім'я підпрограми обробної відповідне подію. Рядка таблиці вибираються щигликом миші і можуть відображати прості чи складні властивості. До простого відносяться властивості, обумовлені єдиним значенням - числом, рядком символів, значенням True (Істина) чи False (Неправда) і т.п. Наприклад, властивість captіon (Заголовок) представляється рядком символів, властивості Heіght (Висота) і wіdth (Ширина) - числами, властивість Enabled (Приступність) - значеннями True чи False. Складні властивості визначаються сукупністю значень. Ліворуч від імені таких властивостей указується значок "+", а щиглик мишею по цьому символі приводить до розкриття списку складових складної властивості. Щоб закрити розкритий список, потрібно клацнути по значку "-" складної властивості. У верхній частині вікна Інспектора об'єктів розташовується список, що розкривається, усіх поміщених на форму компонентів. Оскільки форма сама по собі є компонентом, її ім'я також присутнє в цьому списку.

У локальному меню вікна, що з'являється після щиглика по ньому правою кнопкою, мається ряд опцій, що дозволяють настроїти вікно. Зокрема , після вибору stay on Top, вікно Інспектора об'єктів буде "спливати" над всіма іншими вікнами незалежно від його активності. Такий стан вікна зручно при частому його використанні, наприклад, при конструюванні складної форми, що містить безліч компонентів. Якщо вибрати в локальному меню опцію Arrange і потім by Category, усі рядки вікна Інспектора об'єктів будуть являти собою списки властивостей, що розкриваються, упорядковані по категоріях. Будь-які категорії можна зробити невидимими. Для цього потрібно в локальному меню вибрати vіew і потім у додатковому меню забрати прапорець ліворуч від категорії. За допомогою опції propertіes локального меню вікна Інспектора об'єктів можна скасувати таку його функціональність, якщо в списку SpeedSettіngs відповідного діалогового вікна вибрати Delphі emulatіon.


4.10 Вікно коду програми


Вікно коду призначене для створення і редагування тексту програми. Цей текст складається за спеціальними правилами й описує алгоритм роботи програми. Сукупність правил запису тексту називається мовою програмування. У системі Delphі використовується мова програмування Object Pascal, що являє собою розширену й удосконалену версію широко розповсюдженої мови Паскаль, уперше запропонованого швейцарським ученим Н. Віртом ще в 1970 р. і удосконаленого співробітниками корпорації Borland (створені ними мови називалися Turbo Pascal, Borland Pascal і Object Pascal). Незважаючи на те, що візуальне середовище Delphі бере на себе багато рутинних аспектів програмування, знання мови Object Pascal є неодмінною умовою для будь-якого програміста, що працює в цьому середовищі.

Первісне вікно коду містить мінімальний вихідний текст, що забезпечує нормальне функціонування порожньої форми в якості повноцінного Wіndows-окна. У ході роботи над проектом програміст вносить у нього необхідні доповнення, щоб додати програмі потрібну функціональність. Оскільки для створення навіть простих програм вам знадобиться створювати і змінювати (редагувати) код програми, нижче описуються основні прийоми роботи з вікном коду.

Відразу після відкриття нового проекту в ньому будуть такі рядки:


unіt Unіt1;

іnterfaceіndows, Messages, SysUtіls, Classes, Graphіcs, Controls, Frms, Dіalogs;і = class(TForm)іvate

{ Prіvate declaratіons } publіc

{ Publіc declaratіons } end;: TForm1;

іmplementatіon

{SR *.DFM}.


Ці рядки Delphі автоматично вставляє у вікно коду для нової форми. Вікно коду визначає поведінкову сторону вікна програми (тобто вікна, що з'являється після початку роботи програми), а вікно форми - його зовнішні прояви. Обоє вікна тісно зв'язані один з одним, причому Delphі "господарює" у його верхній частині, уставляючи необхідні рядки між

іt Unіt1;

і іmplementatіon


Щоб вставити у вікно новий рядок (рядка), потрібно спочатку, за допомогою клавіш чи курсору клацнувши по вікну мишею, поставити текстовий покажчик (миготливу вертикальну рису) на потрібне місце, а потім за допомогою клавіатури ввести текст. Звичайно текст коду програми розташовується в декількох рядках. Для переходу на новий рядок використовуйте клавішу Enter. Якщо в процесі уведення ви помилилися і відразу помітили свою помилку, видалите помилковий символ клавішею Backspace (довгаста сіра клавіша в правому верхньому куті зони алфавітно-цифрових чи клавіш розташована там же клавіша з лівою стрілкою). Клавіша Backspace видаляє символ ліворуч від миготливого покажчика, а клавіша Delete - праворуч від нього. Якщо знадобиться видалити відразу весь рядок тексту, поставте в будь-яке місце рядка миготливий покажчик, натисніть клавішу Ctrl і, не відпускаючи її, клавішу з латинською буквою Y. Таке спільне натискання клавіш надалі будемо позначати символом "+": Ctrl+Y. Щоб скасувати остання зміна тексту, натисніть Ctrl+Z чи виберіть Пункт меню Edіt | Undo.


4.11. Типи змінних


Перемінні - це деяка область у пам'яті, що зберігає дані. Перед використанням перемінної необхідно вказати її тип, і при необхідності розмір.


4.11.1 Цілочисельний тип

Тут перемінні можуть містити цілі числа, що не мають дробової частини (таблиця 4.1).


Таблиця 4.1

Таблиця цілочисельного типу

ТипЗначенняОбємShortint-128..1278-біт зі знакомSmallint-32768..3276716-біт зі знакомInteger-2147483648.. 214748364732-біт зі знакомLongint-2147483648.. 214748364732-біт зі знакомInt64-2^63..2^63-164-біт зі знакомByte0..2558-біт без знакаWord0..6553516-біт без знакаLongword0..429496729532-біт без знакаCardinal0..429496729532-біт без знака

Число після знака ^ означає ступінь. Проте, це правило не можна застосовувати в програмі. Серед усього різноманіття запропонованих даних рекомендую користатися типом Іnteger, що крім усього має логічний тип представлення цілих чисел.


4.11.2 Дійсний тип

У перемінних цього типу числа представляють дані, що складаються з цілої і дробової частини (таблиця 4.2). Причому все це зберігатися в одному осередку даних, що саме собою дає деяку погрішність. У такому випадку можна порадити використовувати перемінну більшої чи точності відокремлювати цілі числа і зберігати в окремих перемінним.

Якщо за початкове значення таких типів прийняти 0, то мінімальне значення, що приведе до зміни його величини можна вважати порогом (чи точністю).

Таблиця 4.2

Таблиця дійсного типу

ТипПорігМаксимальне значеняКількість цифр в значеніОбєм, байтReal2,9*10^-391,7*10^3811-126Single1,5*10^-453,4*10^387-84Double5,0*10^-3241,7*10^30815-168Extended3,4*10^-49321,1*10^493219-2010Comp1,09,2*10^1819-208Currency0,00019,2*10^1419-208

Останні два типи застосовуються для фінансових арифметичних операцій.

Тип Real залишений для сумісності з ранніми версіями Delphі і Pascal. Більшість програмістів працюють на комп'ютерах із процесорами 5 серії (убудований співпроцесор) чи вище, тому рекомендується користатися перемінними типу Double.


4.11.3 Символьний тип

Символьний тип називається Char. Він займає один байт у пам'яті і це значить, що може містити 255 можливих значень символів, що відповідає стандартному кодуванню ANSІ. Функція Ord(C) повертає значення порядкового номера символу С в таблиці кодування. Значення, що повертається, має тип Byte. Зворотне перетворення здійснюється функцією Chr(B).

Приклад такого перетворення при натисканні на кнопку Button1:

TForm1.Button1Clіck(Sender: TObject);

C:Char;B:Byte; // символьна і чисельна переміннаіn:='A'; // у перемінну З заносимо символ А:=Ord(C); // одержуємо значення символу А рівне 65:=100; // У перемінну В заносимо 100:=Chr(B); // одержуємо символ d;


Функція UpCase перетворить малу літеру в прописну. Але вона працює тільки із символами англійського алфавіту.


4.11.4 Строковий тип

У мові програмування Pascal максимальна довжина рядка Strіng мала 255 символів. У Delphі залишена такий рядок, але називається вона ShortStrіng. Максимальна довжина перемінна Strіng тепер обмежується тільки розмірами пам'яті. Дані в строкових, як і в символьних перемінних, містяться в лапках, що відокремлюють дані від команд програми.

Приклад:

:Strіng; // Оголошення строкової перемінний st:='привіт'; // Заносимо в перемінну st текстовий рядок(st); // Висновок на екран віконця з повідомленням


Тут весь приклад шматка програми можна привести в більш спрощений вид:

('привіт');


4.11.5 Булевий тип

Тут можна сказати, що перемінні, що мають булевий тип, можуть приймати два можливі значення. Це true (вірно) чи false (невірно). Оголошується він як тип Boolean.

5. ПРОГРАМНА РЕАЛІЗАЦІЯ ТА ЕКСПЕРЕМЕНТАЛЬНЕ ДОСЛІДЖЕННЯ АЛГОРИТМІВ ГЕНЕРАЦІЇ ПСЕВДОВИПАДКОВИХ ЧИСЕЛ


.1 Вимоги до проектованої системи та коло задач, що вона вирішує


При проектуванні системи приймалися до уваги наступні вимоги.

. Оптимальний склад технічних засобів, при яких працює програма:

·ПК типу IBM PC або сумісний з ним, продуктивністю не менше 600 МГц;

·Оперативна пам'ять не менше 128 МГбайт;

·Монітор із SVGA адаптером;

·НЖМД не менше 4,3 Гбайт;

·НГМД 3,5 дюйми;

·Компакт-дисковий носій (CD);

·Клавіатура, маніпулятор типу "миша".

2. Система не повинна мати привязки до апаратної частини для можливого переносу її на нову платформу через моральне старіння компютерної техніки;

. Програмна оболонка повинна мати інтуїтивно зрозумілий інтерфейс;

Система повинна функціонувати під керуванням операційних систем Windows 98 та Windows 2000, або Windows ХР.

Розроблений програмний продукт призначений для ілюстрації дослідження властивостей найбільш поширених алгоритмів генерації псевдовипадкових чисел. В розробленому програмному забезпеченні були використані наступні найбільш відомі та поширені алгоритми:

·"Середини квадрата" фон Неймана;

·Лінійний конгруентний;

·Фібоначчі з запізненням;

·Алгоритм Блюма - Блюма - Шуба;

·Вихор Мерсенна.

Для порівняльного дослідження статистичної якості даних алгоритмів був використаний теоретичний критерій оцінки якості «c-квадрат», на підставі якого були зроблені відповідні висновки.

Система створена засобами середовища програмування Turbo Delphi 2006 Explorer і реалізує всі необхідні вимоги, які пред'являлися в постановці завдання до дипломної роботи і виконує повне коло задач, перерахований вище.


5.2 Розробка логіко-функціональної схеми


Логіко-функціональна схема системи наведена на рис.5.1.



Рис. 5.1 Логіко-функціональна схема роботи системи


.3 Опис елементів інтерфейсу користувача


Інтерфейс розробленої системи функціонально складається з двох частин. Перша з них призначена для наочної демонстрації результатів роботи пяти основних алгоритмів генерації псевдовипадкових чисел (рис.5.2).

Вікно системи розділено на дві частини - в лівій частині обирається метод генерації і вводяться необхідні параметри, в правій за допомогою стандартного компоненту Chart відображаються результати роботи алгоритмів та найважливіший критерій їх якості - період.


Рис.5.2 Вікно системи в режимі демонстрації результатів роботи основних алгоритмів


Кількість чисел в послідовності можна встановити за допомогою лічильника. Зовнішній вигляд вікна залежить від обраного методу генерації. Наприклад, коли обраний метод Фібоначчі з запізнюванням область вікна, що призначена для вводу параметрів буде мати вигляд, наведений на рис.5.3.

Система також виводить спливаючу підказку для кожного із функціональних елементів вікна.


Рис.5.3 Область вводу параметрів при обраному методі Фібоначчі з запізнюванням

Друга функціональна частина розробленої системи призначена для візуалізації роботи статистичного критерію „c-квадрат


Рис.5.4 Візуалізація роботи статистичного критерію „c-квадрат


В лівій частині вікна наведені умовні позначення, в правій візуально відображаються результати тестування.

Таким чином, розроблена система має інтуїтивно зрозумілий інтерфейс. Також передбачена довідкова система, яку можна вивести на екран за допомогою клавіші F1.


5.4 Програмна реалізація та опис основних процедур і функцій розробленої системи


Як було зазначено вище, зовнішній вигляд інтерфейсу залежить від обраного методу. Нижче наведений програмний код, за допомогою якого це було реалізовано.

TForm1.RadioGroup1Click(Sender: TObject);.Caption:='';RadioGroup1.ItemIndex of

:begin GroupBox1.Visible:=false; GroupBox3.Visible:=false; .Visible:=false; end;

:begin GroupBox1.Visible:=true; GroupBox3.Visible:=false; .Visible:=false;end;

:begin GroupBox3.Visible:=true;GroupBox1.Visible:=false; .Visible:=false;end;

: begin GroupBox3.Visible:=false;GroupBox1.Visible:=false; .Visible:=true;end;

: begin GroupBox3.Visible:=false;GroupBox1.Visible:=false; .Visible:=false;end;;;


Генерація псевдовипадкових чисел відбувається при натисненні кнопки START. Якщо метод не обраний, процедура автоматично завершується. Назва вкладки, де відображаються результати генерації також залежить від обраного методу.

RadioGroup1.ItemIndex=-1 then exit;.Caption:=RadioGroup1.Items[RadioGroup1.itemindex];.Clear;


Алгоритм розгалуження був реалізований за допомогою структури CASE.

RadioGroup1.ItemIndex of

: begin //метод середини квадрата:=0; f:=false;:=random(9999-1000)+1000; //генерація початкового значенняi:=1 to SpinEdit1.Value do //цикл генерації послідовності - кількість

членів обирається користувачем:=sqr(y/10000); //попередній член зводиться в квадрат:=floattostrf(y,fffixed,10,8); //перетворення в строкову змінну:=copy(s,5,4); //виділення середніх цифр:=strtofloat(s); //зворотне перетворення строки в число

//обчислення періоду послідовності(y=z[1]) and (f=false) then begin t:=i; f:=true; end;:=j+1; z[j]:=y; if j=4 then j:=0;.AddXY(i,round(y),'',clRed); //вивід точки графіку;.Caption:='Период - '+inttostr(t-1); //вивід обчисленого періоду;


Як вже було сказано вище, лінійний конгруентний генератор входить до складу більшості компіляторів, в тому числі і Delphi. Тому система працювати в двох режимах - генерувати псевдовипадкові числа зі стандартними параметрами алгоритму або із довільними параметрами, що вводяться користувачем.


: begin //лінійний конгруентний методCheckBox1.Checked then //якщо обраний перемикач „Стандартні

значенняi:=1 to SpinEdit1.Value do//цикл генерації послідовності:=random(10000); //випадкове число в діапазоні від 0 до 10000.AddXY(i,xk,'',clRed);;.Caption:='Период - '+Edit1.Text; //якщо параметрі стандартні,

період генератору дорівнює величині модуля m // якщо параметри обираються довільно(Edit1.Text='') or (Edit2.Text='') or(Edit3.Text='') or (Edit4.Text='')exit; //якщо значення параметрів не введено, процедура

завершується:=strtoint(Edit1.Text); //модуль_l:= strtoint(Edit2.Text); //множник:=strtoint(Edit3.Text); //приріст:=strtoint(Edit4.Text); //початкове значенняi:=2 to SpinEdit1.Value do //цикл генерації послідовності:=(a_l*x0+c) mod m; //генерація наступного значення:=xk;.AddXY(i,xk,'',clRed);;;;


Генератор на основі метода Фібоначчі з запізненням реалізований наступним чином. Значення лагів обираються користувачем із фіксованого списку, який сформований на етапі проектування системи. Значення періодів в кожному випадку обчислені по формулі (3.9) для двохрозрядних чисел.

: begin // метод Фібоначчі з запізненням

ComboBox1.ItemIndex of //вибір значення лагів

: begin a:=55; b:=24; Label27.Caption:='Период - 36028797018963968';;

: begin a:=17; b:=5; Label27.Caption:='Период - 524288';end;

: begin a:=97; b:=33; Label27.Caption:='Период -

' end;;:=strtoint(e.Text); //число розрядів в мантисі:=1;i:=1 to e1 do:=razr*10;i:=1 to a do[i]:=random(99)/razr; //формування початкового масиву за допомогою

стандартного генераторуi:=a+1 to SpinEdit1.Value+a do //генерація послідовності за

допомогою методу Фібоначчі з запізненнямx[i-a]>=x[i-b] //реалізація алгоритмуx[i]:=x[i-a]-x[i-b] else[i]:=x[i-a]-x[i-b]+1;.AddXY(i,round(x[i]*100),'',clRed);;;


Реалізація методу Блюма-Блюма-Шуба також дозволяє користувачеві обирати параметри. Числа p і q обовязково повинні бути достатньо великими простими числами


: begin // метод Блюма-Блюма-Шуба(Edit5.Text='') or (Edit6.Text='') then exit; //якщо параметри не обрані -

вихід із процедури:=strtoint(Edit5.Text);:=strtoint(Edit6.Text);:=random(100); //початкове значенняi:=1 to SpinEdit1.Value do //генерація послідовності:= sqr(xb) mod p*q;.AddXY(i,xb,'',clRed);;;


Для реалізації методу „Вихор Мерсенна був використаний модуль, який безкоштовно надається на сайті розробників цього алгоритму. Лістінг модулю наведений в Додатку А.


: begin for i:=1 to SpinEdit1.Value do.AddXY(i,genrand_MT19937,'',clRed);.Caption:= 'Период - 2^19937-1';


Далі розглянемо програмну реалізацію другої функціональної частини системи - тестування алгоритмів за допомогою статистичного критерію „c-квадрат.

У даному випадку розглядається варіант, коли кількість ступіней свободи дорівнює n=50. Кількість ступіней свободи на одиницю менше ніж кількість незалежних випробувань. Відповідні значення процентних точок „c-квадрат - розподілення для n=50 були описані в програмі за допомогою констант:

xp:array[1..7]of real =(29.71,34.76,42.94,49.33,56.33,67.50,76.15);:array[1..7] of integer =(1,5,25,50,75,95,99); //процентні точки критерію:=51; //кількість випробувань_sv:=n-1; //ступень свободи:=1/n; //вірогідність:=0;_n:=0;

//лінійний конгруентний метод зі стандартними параметрамиi:=1 to n do:=random(99); //генерація випадкового числа:=v+sqr(x-n*ps)/n*ps; //обчислення згідно формули (3.?) величини V

end;


Далі проводимо пошук в масиві констант, що відповідає значенням процентних точок „c-квадрат найближчого значення, більшого за обчислене V

i:=1 to 7 doxp[i]>v then // якщо значення знайдене, воно запамятовується в

змінній_n та цикл завершується_n:=p[i];;;


Далі, згідно методики, запропонованої Д. Кнутом, відображаємо отримані результати. В залежності від того, до якої категорії належать випадкові числа, індикатори змінюють свій колір.((p_n=1) or (p_n=99)) //якщо числа належать до 1-ї категорії (відкинути) - колір компоненту Shape - червоний.begin shape1.Shape:=stCircle;.Brush.Color:=clRed;((p_n=5) or (p_n=95)) //якщо числа належать до 2-ї категорії

(підозрілі) - колір компоненту Shape - фіолетовий.begin shape1.Shape:=stCircle;.Brush.Color:=clFuchsia;((p_n=10) or (p_n=90)) //якщо числа належать до 1-ї категорії (майже

підозрілі) - колір компоненту Shape - жовтий.begin shape1.Shape:=stCircle;.Brush.Color:=clYellow;// в інших випадках колір залишається білимshape1.Shape:=stRectangle;.Brush.Color:=clWhite;;

// Виводимо значення обчислених величин.Visible:=true;.Visible:=true;.Caption:='V='+floattostrf(v,fffixed,5,3);.Caption:='p='+inttostr(p_n)+'%';

Аналогічним чином реалізоване тестування алгоритмів Фібоначчі з

запізненням ті Вихор Мерсенна.

// Фібоначчі з запізненням:=97; b:=33; //задаємо значення лагів:=0; p_n:=0;i:=1 to a do //формуємо початковий масив за допомогою

стандартного генератору[i]:=random(99)/100;i:=a+1 to n+a dox1[i-a]>=x1[i-b]x1[i]:=x1[i-a]-x1[i-b] else[i]:=x1[i-a]-x1[i-b]+1;:=v+sqr(x1[i]*100-n*ps)/n*ps;;


Далі, як і першому випадку йде пошук найближчого значення в масиві констант та візуалізація отриманих результатів.


// Вихор Мерсенаi:=1 to n do:=v+sqr(genrand_MT19937/20000000-n*ps)/n*ps;;


Для кожного з трьох алгоритмів проводиться пять експериментів.

В результаті проведених досліджень можна зробити висновки, що алгоритм „Вихор Мерсенна в більшості ніж 99% випадків проходить тест на критерій „c-квадрат. Стандартний лінійний конгруентний генератор має значно нижчий потенціал.

програма алгоритм псевдовипадковий конгруентний


6 ЕКОНОМІЧНЕ ОБҐРУНТУВАННЯ ДОЦІЛЬНОСТІ РОЗРОБКИ ПРОГРАМНОГО ПРОДУКТУ


Очікуваний економічний ефект від розробки визначається за формулою:


Е0Р - Ен Кп


де ЕР - річна економія;

Кп - капітальні витрати на проектування;

Ен - нормативний коефіцієнт (Е=0,15).

Річна економія ЕР складається з економії експлуатаційних витрат і економії у зв'язку з підвищенням продуктивності праці користувача. Таким чином, отримуємо:


ЕР = (Р1 - Р2) +DРп,


де Р1 й Р2 - відповідно експлуатаційні витрати до і після впровадження;

DРп - економія від підвищення продуктивності праці користувача.

В експлуатаційні витрати входять:

заробітна плата працівників інформаційної галузі;

заробітна плата персоналу по обслуговуванню комплексу технічних засобів (КТЗ);

накладні витрати;

інші витрати.

Витрати на утримання персоналу.

Витрати по різних видах працюючих визначаються по формулі


,

де ni - чисельність персоналу i - виду;i - середньорічна заробітна плата робітника i - го виду;


Таблиця 6.1

Витрати на додаткові матеріали

№ п/пНайменування матеріалуВитрата, шт.Ціна, грн./шт.Сума, грн.1Допоміжна література150502Диск CD-RW1333Диск CD-R212Разом 55

В ході розробки програмного продукту було використане програмне забезпечення Turbo Delphi 2006 Explorer, яке є безкоштовним.

Основні виробничі фонди:

IBM-сумісний комп'ютер Pentium IІІ, RAM-256Mb, SVGA-800*600*16bit;

за ціною 2000 грн.

Амортизація розраховується лінійним способом, в розрахунку від строку експлуатації, наприклад 5 років.


А=816+1020+2000=4836

А=4836:3=1612грн. в рік.


Таблиця 6.2

Основна заробітна плата програміста ПП

№ п/пВиконувачіТрудомісткість, люд.дн.Оклад, грн.Витрати по з/п, грн.1Програміст61200276,90

Додаткова заробітна плата програміста складає 20 % від основної заробітної плати:


,90*0,20=55,38грн

Фонд заробітної плати являєє собою суму основної й додаткової заробітної плати:


276,90+55,38=332,28 грн


Відрахування на соціальні нужди складають 37,% від фонду оплати праці:


332,28*0,37=122,94 грн


Накладні витрати складають 250 % від величини основної заробітної плати:


276,90*2,5=692,25грн


Таблиця 6.3

Калькуляція

№ п/пНайменування статей витратВитрати, грн.1Амортизація основних засобів16122Видаткові матеріали553Основна заробітна плата програміста276,904Додаткова заробітна плата програміста55,385Відрахування на соціальне страхування122,946Накладні витрати692,257Інші витрати100Разом витрат Зк= 2914,47

Витрати на ручну обробку інформації визначаються по формулі:


,


де - обєм інформації, що обробляється вручну, Мбайт;

Ц - вартість однієї години праці, грн. / рік;

- коефіцієнт, що враховує додаткові витрати часу на логічні операції при ручній обробці інформації;

- норма виробітку, Мбайт / рік.

У даному випадку:

Ои = 10 Мбайт (загальний розмір даних, що обробляються),

Заробітна плата техніка 1150 грн.


Ц=1150/26/8=5,52 грн. / година,


Гд = 2,5 (встановлений експериментально),

Нв = 0,004 Мбайт / година.

Отже, витрати на ручну обробку інформації дорівнюють:


Зр=10*5,52*2,5/0,004=34500 грн.


Витрати на автоматизовану обробку інформації розраховуються по наступній формулі:


,


де - година автоматизованої обробки, рік.;

- вартість однієї години машинного часу, грн./рік;

- година роботи оператора, рік.;

- вартість однієї години роботи оператора, грн./рік.

Для даного випадку:a = 180 год.,

Номінальний фонд робочого часу розраховується по формулі :



к - кількість відпрацьованих годин за рік;

к1 - щоденні втрати 9-10% (відпустка, декретна відпустка та ін.)

к2 - внутрішні втрати робочого часу, 1- 2% (пільгові години, перерви та ін.).


К = д * р * м


д - середня кількість робочих днів у місяці = 25;

р - тривалість робочого дня = 8;

м - кількість робочих місяців за рік = 11;


К = 25 * 8 * 11 = 2200 годин за рік.

= 1980 год.


Час роботи оператора = 1980 годин за рік

Вартість однієї години машинної години дорівнює:


Цм = Цэ


Цэ - вартість 1квт електроенергії (0,25 грн.)

Р - споживана потужність комп'ютера в рік 160 Вт


Цм=0,25*0,16=0,04грн/рік0 = 1980 год,

Ц0 =1000/ 26/8=4,80 грн. (заробітна плата бухгалтера 1000 грн)


Отже, витрати на автоматизовану обробку інформації дорівнюють:


За=1980*0,04+1980*(4,80+0,04) =9662,40 грн.


Таким чином, річна економія від упровадження дорівнює:


Эу = 34500 - 9662,40 - 2914,47= 21923,13 грн.


Економічний ефект від використання програмного забезпечення за рік визначається по формулі, грн.:


.

Эг=21923,13 - 4836*0,2=20955,93 грн.


Ефективність розробки може бути оцінена по формулі:


.

Эр=20955,93 *0,4/2914,47=2,87грн


Якщо Ер > 0,20, то наша розробка є економічно доцільною.

Вартісна оцінка результатів застосування програмного забезпечення за розрахунковий період Т визначається по формулі:


де Т - розрахунковий період ;

Рt - вартісна оцінка результатів t розрахункового періоду, грн.;

- дисконтуюча функція, яка вводитися з ціллю приводу всіх витрат та результатів до одного моменту часу.

Дисконтуюча функція має вигляд:


= 1 / (1 + р) t,


де р - коефіцієнт дисконтування (р = Ен = 0,2, Ен - нормативний коефіцієнт ефективності капітальних вкладень).

Таким чином,



Якщо програмне забезпечення заміняє ручну працю, отже, набір корисних результатів у принципі не міняється. У якості оцінки результатів застосування програмного забезпечення за рік береться різниця (економія) витрати, які виникають у результаті використання програмного забезпечення, тобто Рt = Эу.

Припускається, що дана розробка без змін та дороботок буде використовуватись у плині п'яти років. Тоді вартісна оцінка результатів застосування програмного забезпечення (економія) за розрахунковий період Т = 5 років складе:


=

20955,93+17463,27+14552,72+12127,26+10106,05 = 75205,23 грн.


Таким чином, у результаті аналізу встановлено, що впровадження розробки виправдано й економічно доцільно.



7. ОХОРОНА ПРАЦІ


Охорона праці - це система законодавчих актів, соціально-економічних, організаційних, технічних, гігієнічних та лікувально-профілактичних заходів і засобів, що забезпечують безпеку, збереження здоров'я і працездатності людини в процесі праці.

Задачі охорони праці - забезпечення нормальних, здорових, безпечних умов праці, вивчення причин травматизму, професійних захворювань, пожарів та розробки систем заходів і вимог по їх усуненню.

Законодавство України про охорону праці базується :

Конституції України, яка гарантує права громадян на працю, відпочинок, охорону здоровя, медичну допомогу і страхування;

Законі України „Про охорону праці, де вказано, що державна політика в області охорони праці базується на пріоритеті життя і здоровя людей в умовах їх трудової діяльності. Відповідальність за створення нормальних і безпечних умов труда несе роботодавець незалежно від форми власності підприємства чи установи які здійснюють розробку виробництва та застосування ПЕОМ і ПК;

Норми штучного та природного освітлення визначені СНіП;

Законі України „Про забезпечення санітарного та епідемічного благополуччя населення де вказані основні вимоги гігієни та санітарії;

Параметрах мікроклімату на робочих місцях регламентованих Держстандартом і ДСН;

Категорії робіт по величині загальних енергозатрат встановленій ДСН;

Законі України „Про загальнообовязкове державне соціальне страхування від нещасного випадку на виробництві та професійного захворювання, які спричинили втрату працездатності, який гарантує право трудящих на соціальний захист і компенсацію постраждалим матеріальних втрат при травмуванні і професійного захворювання;- Кодексів законів про працю (КЗпП) де викладені окремі вимоги охорони праці;

в законі України „Про пожежну безпеку і „Правила про пожежну безпеку в Україні

Крім того є ряд Державних стандартів, правил, норм, інструкцій та інших нормативних документів, регламентуючих питання охорони праці.


7.1 Аналіз небезпечних і шкідливих факторів в обчислювальному центрі


Одна з найважливіших задач охорони праці - забезпечення безпеки працюючих, тобто забезпечення такого стану умов праці, при якому виключено дію на працюючих небезпечних і шкідливих виробничих чинників.

Нанесення травми людині в умовах виробництва обумовлене наявністю небезпечних виробничих чинників:

несприятливі мікрокліматичні умови;

підвищений рівень шуму;

недостатнє або надмірне освітлення;

підвищений рівень рентгенівських випромінювань;

рівня електромагнітних випромінювань;

психофізіологічні шкідливі і небезпечні виробничі чинники.

Держстандарт 12.1.005-88 розповсюджується на повітря робочої зони підприємств, встановлює загальні санітарно-гігієнічні вимоги до показників мікроклімату й допустимому вмісту шкідливих речовин в повітрі робочої зони. Вимоги на допустимий вміст шкідливих речовин в повітрі робочої зони розповсюджуються на робочі місця незалежно від їх розташування.

Показники, якими характеризується мікроклімат є: температура повітря, відносна вологість повітря, швидкість руху повітря, інтенсивність теплового випромінювання. Низька температура повітря впливає на оператора, як на організм людини так і на обладнання ПЕОМ. Великий вплив виявляє відносна вологість. При відносній вологості повітря більш 75-80% знижується опір ізоляції, змінюються робочі характеристики елементів, зростає інтенсивність відмов елементів ПЕОМ. Швидкість руху повітря і запиленість повітряного середовища виявляють вплив на функціональну діяльність людини і роботу приладів ПЕОМ.

В холодні періоди року температура повітря, швидкість його руху і відносна вологість повітря відповідно складають: 22-24 С°; 0,1 м/с; 40-60%; в теплі періоди року температура повітря - 23-25 С°; відносна вологість 40-60 %; швидкість руху повітря - 0,1 м/с.

Кондиціювання - це автоматична підтримка в закритих приміщеннях всіх або окремих параметрів повітря з метою забезпечення оптимальних мікрокліматичних умов.

Згідно СНіП 2.04. 05-91 система вентиляції, кондиціювання повітря й повітряного опалення передбачена для суспільних, адміністративно-побутових і виробничих категорій.

Одним з найважливіших фізіологічних механізмів організму є терморегуляція, що залежить від мікрокліматичних умов навколишньої середи. Терморегуляція підтримує тепловий баланс організму людини при різноманітних метеорологічних умовах і важкості роботи, що виконується за рахунок звуження або розширення поверхні кровоносних судин і відповідної роботи потових залоз.

Несприятливий мікроклімат в процесі роботи викликає недомагання і втому організму, порушує нервову і розумову діяльність, сприяє зниженню спостережливості і швидкості реакції.

Психофізіологічні шкідливі і небезпечні виробничі чинники по характеру дії поділяються на фізичні і нервово-психічні перевантаження.

При експлуатації ПЕОМ можуть виникнути негативні явища в організмі людини. Розлади, що виникають в результаті постійного виконання дій, що повторюються, стосуються працівників, що використовують в своїй роботі клавіатуру. При цьому виникає синдром тунельного запястя, який викликає розпухання сухожиль, і що супроводжується постійною біллю при виконанні будь-яких дій, навіть не звязаних безпосередньо з професійною діяльністю.

Відповідно діючим нормативним документам (СН 512-78 и ДСанПіН 3.3.007-98) дана площа приміщення розрахована на одну людину 13,0 м2; обєм -35,1м3. Стіна, стеля, підлога приміщення виготовляються з матеріалів, дозволених для оформлення приміщень санітарно-епідеміологічним наглядом. Підлога приміщення вкрита діелектричним килимком, випробуваним на електричну міцність.

Висота робочої поверхні столу для персонального компютера (ПК) - 690 мм, ширина повинна забезпечувати можливість виконання операцій в зоні досягнення моторного ходу; висота столу 725 мм, ширина 800 мм, глибина 900 мм. Простір для ніг: висота 600 мм, ширина 500 мм, глибина на рівні колін 500 мм, на рівні витягнутої ноги 650мм.

Ширина й глибина сидіння 400 мм, висота поверхні сидіння 450 мм, кут нахилу поверхні від 15° вперед до 5° назад. Поверхня сидіння плоска, передній край закруглений.

Заземлення конструкцій, які знаходяться в приміщенні надійно захищені діелектричними щитками. В приміщенні з ПЕОМ кожен день проводиться вологе прибирання.

В доступних місцях знаходяться аптечки першої медичної допомоги.

Приміщення з ПЕОМ оснащено системою автоматичної пожежної сигналізації, а також устатковане засобами пожежегасіння. Підходи до засобів пожежегасіння вільні. Приміщення має кімнати для відпочинку, приймання їжі, психологічного розвантаження та інші побутові приміщення.

Для забезпечення безпеки життєдіяльності працівників у приміщенні варто підтримувати необхідну якість повітря, тобто оптимальні (у крайньому випадку припустимі) параметри мікроклімату, сталість газового складу й відсутність (у крайньому випадку не вище ГПК) шкідливих домішок у повітрі. Для цього необхідно подавати в ці приміщення певну кількість чистого зовнішнього повітря, потреба в якому регламентується СНіП 2.04.05-91. Для підтримки певних параметрів мікроклімату використовується опалення, вентиляція, кондиціювання, що є найважливішою частиною інженерного спорудження.

При роботі на ПЕОМ людина наражається на шумовий вплив з боку багатьох джерел, наприклад, шум викликаний роботою принтера (70 дБ).

Під впливом шуму відбувається зниження слухової чутливості, що тим значні, ніж вище інтенсивність шуму і більше його експозиція. Діючи на слуховий аналізатор, шум змінює функціональний стан багатьох систем органів людини внаслідок взаємодії між ними через центральну нервову систему. Це виявляє вплив на органи зору людини, вестибулярний апарат і рухові функції, а також призводить до зниження мускульної дієздатності.

При роботі в умовах шуму спостерігається підвищена втомлюваність і зниження дієздатності, погіршується увага і мовна комутація, створюються передумови до помилкових дій працюючих. Являючись причиною частих головних нездужань, нестійкого емоційного стану, шум створює передумови до погіршення психологічного стану. Шкідливий вплив шуму на організм людини, як правило, посилюється за наявності інших шкідливих або несприятливих виробничих чинників.

Джерелами випромінювання електромагнітних полів (ЕМП) в ПЕОМ є система відхилення випромінювання монітору, а також елементи блоків живлення системного модуля, монітору, принтера.

Дія електромагнітних полів на організм людини виявляється у функціональному розладі центральної нервової системи. В результаті тривалого перебування в зоні дії електромагнітних полів наступають передчасна стомлюваність, сонливість або порушення сну, з'являються часті головні болі.

Систематичний вплив на працюючого ЕМП з рівнями, що перевищують допустимі, призводить до порушення стану його здоровя. При цьому можуть виникати зміни в нервовій, серцево-судинній та інших системах організму людини. При впливі ЕМП значної інтенсивності на організм можуть виникати поразки кришталиків ока, нервово-психічні захворювання і трофічні явища (випадення волосся, ломкість нігтів). Ступінь шкідливого впливу ЕМП на організм людини визначається напругою електромагнітного поля, довжиною хвилі і тривалістю перебування організму в зоні діяльності ЕМП.

Електронно-променеві трубки, які працюють при напрузі понад 6 кВ є джерелами „мякого рентгенівського випромінювання. При напрузі понад 10 кВ рентгенівське випромінювання виходить за межі скляного балону і розсіюється в навколишньому просторі виробничого приміщення.

Шкідливий вплив рентгенівських променів звязаний з тим, що, проходячи через біологічну тканину, вони викликають в тканині іонізацію молекул тканинної речовини, що може призвести до порушення міжмолекулярних звязків, що в свою чергу, призводить до порушення нормальної течії біохімічних процесів і обміну речовин.

Значення освітлення в процесі життєдіяльності і особливо виробничої діяльності сучасного суспільства величезне. Організація раціонального освітлення робочих місць - одне з основних питань охорони праці. Залежно від джерела світла виробниче освітлення може бути трьох видів: природне, штучне і суміщене.

Для природного освітлення характерна висока дифузна (неуважність) денного світла від небозводу, що вельми сприятливе для зорових умов роботи. Природне освітлення підрозділяють на бічне, здійснюване через світлові віконні отвори; верхнє, здійснюване через аераційні і зенітні ліхтарі, отвори в перекриттях; комбіноване - бічне з верхнім. Природне освітлення характеризується тим, що створювана освітленість змінюється в надзвичайно широких межах залежно від часу дня, року, метеорологічних чинників. Тому природне освітлення неможливе кількісно задавати величиною освітленості. Як нормована величина для природного освітлення прийнята відносна величина - коефіцієнт природної освітленості (КЕО), який є вираженим у відсотках відношенням освітленості в даній крапці усередині приміщення до одночасного значення зовнішньої горизонтальної освітленості, створюваної світлом повністю відкритого небозводу, тобто



Штучне освітлення передбачається у всіх виробничих і побутових приміщеннях, де не досить природного світла, а також для освітлення приміщень в нічний час. По функціональному призначенню штучне освітлення підрозділяють на робоче, аварійне, евакуаційне, охоронне, чергове. Робоче освітлення забезпечує зорові умови нормальний роботи, проходу людей і руху транспорту. Аварійне освітлення влаштовують для продовження роботи при раптовому відключенні робочого освітлення. При цьому нормована освітленість повинна складати 5 % від робочого освітлення. Евакуаційне освітлення передбачається для евакуації людей з приміщень при аваріях в місцях, небезпечних для проходу людей, на сходових клітках (повинно бути в приміщеннях не менше 0,5, а на відкритих територіях - не менше 0,2 лк).

По розподілу світлового потоку в просторі розрізняють світильники прямого, розсіяного і відображеного світла, а по конструктивному виконанню - світильники відкриті, закриті, захищені, пилонепроникні, вологозахисні, вибухозахищені, вибухобезпечні. За призначенням світильники діляться на світильники загального і місцевого освітлення.

Штучне освітлення може бути загальним (рівномірним або локалізованим) і комбінованим (до загального додається місцеве). Застосування тільки місцевого освітлення забороняється.

В силу тісного взаємозвязку зору людини з роботою мозку освітлення виявляє істотний вплив на центральну нервову систему, яка керує всією життєдіяльністю людини. Раціональне освітлення сприяє підвищенню продуктивності і безпеки праці і збереженню здоровя працюючих. Недостатнє освітлення робочих місць - одна з причин низької продуктивності праці. В цьому випадку очі працюючого сильно напружені, важко розрізняють предмети, у людини знижується темп і якість роботи, погіршується загальний стан.

На органах зору негативно відбивається як недостатнє так і надмірне освітлення. Надмірна освітленість призводить до осліплення, що характеризується різзю в очах, при цьому очі працюючого швидко втомлюються і зорове сприймання різко погіршується.

Важливе значення для створення сприятливих умов праці має культура праці й виробнича естетика. Чистота на робочому місці, правильно підібрана колірне фарбування приміщень, інвентарю, устаткування, форма й покрій робочого одягу, спеціально підібрана музика - все це створює гарний настрій, підвищує життєвий тонус і працездатність. Естетичні умови на виробництві мають істотне значення не тільки для оздоровлення, полегшення праці, але й для підвищення його привабливості і продуктивності. У зв'язку із цим на промислових підприємствах велике значення надається промисловій естетиці.

Як самостійна галузь знань промислова естетика і теоретично і організаційно сформувалась порівняно недавно. Вона вивчає закони художньої творчості в сфері виробництва. Коло питань, розроблювальних промисловою естетикою, дуже широкий. Це раціональне колірне оформлення промислових приміщень і встаткування, розумна організація робочого місця, художнє конструювання верстатів, машин, інструментів, впровадження функціональної музики, художня розробка моделей робочого одягу, устаткування стендів наочної агітації, озеленення території цехів і підприємств.

Колір є одним з найбільш потужних засобів емоційного впливу на людину. Колір робочих приміщень, устаткування, механізмів викликає в людини певні емоції, впливає на стомлюваність, травматизм, брак у роботі, а отже, на продуктивність праці. Впливаючи на нервову систему, колір збуджує або заспокоює, створює ілюзію тепла або холоду, тяжкості або легкості, наближення або віддалення. Колірне фарбування виробничих приміщень доцільно робити з урахуванням технологічного призначення приміщень, умов роботи, температури, характеру висвітлення й вимог охорони праці. Колір устаткування повинен бути м'яким, спокійним, психологічно сприятливим. У яскраві контрастні кольори фарбують органи керування встаткування, рухливі частини.

У виробничому інтер'єрі колір також відіграє попереджуючу роль, використовується для зображення технологічних символів і всіляких сигналів. Наприклад, при будівництві промислових об'єктів трубопроводи різного призначення (для води, кислоти, газу) пофарбовані в різний колір. Усім відомі сигнально-попереджуючі кольори: червоний - стоп, небезпечно; жовтий - можлива небезпека; зелений - повна безпека. З економічної точки зору раціональне фарбування робочих приміщень і встаткування підвищує продуктивність праці на 5-20%, зменшує число нещасних випадків.

Принципам організації праці повинно відповідати і взаємне компонування робочих місць у рамках офісного приміщення, так і структура індивідуального робочого місця.

Основні принципи ергономічної організації робочого місця - комфорт і мінімізація навантажень. Зрозуміло, принципам ергономіки повинна відповідати й використовувані меблі. Наприклад, зручне крісло, у якому можна без шкоди для здоров'я працювати тривалий час, повинне бути оснащений підлокітниками й підголівником, що знімають навантаження з м'язів плечового поясу. Пружна спинка анатомічної форми зменшує навантаження на хребет. У результаті конструкція рівномірно підтримує все тіло. Також крісло повинне регулюватися по висоті й глибині сидіння, залежно від ваги й росту людини.

Серед столів найбільш ергономічною визнана криволінійна кутова форма. За рахунок увігнутості більша частина їхньої площі виявляється використовуваної, оскільки попадає в зону охоплення руками людини, рівну 35-40 см.

Самим оптимальним фахівцями вважається розташування меблів за принципом «усе під рукою», коли всі необхідні для щоденної роботи полиці, тумби, шафи перебувають на відстані витягнутої руки. Це дозволяє виключити непотрібні витрати енергії й зосередиться на виконанні прямих обов'язків.


7.2 Заходи щодо нормалізації шкідливих і небезпечних факторів


На сьогоднішній день основним засобом захисту від електромагнітних випромінювань, що застосовуються в обчислювальній техніці є екранування джерел випромінювання. Сьогодні всі монітори, що випускаються, а також блоки живлення мають корпус, виконаний зі спеціального матеріалу, що практично повністю затримує проходження електромагнітного випромінювання. Застосовуються також спеціальні екрани, що зменшують ступінь впливу електромагнітних і рентгенівських променів на оператора.

Для зниження електромагнітного впливу на людину-оператора використовуються також раціональні режими роботи, при яких час роботи на ПЕОМ не повинна перевищувати 50 % робочого часу.

Вентиляція - це організований і регульований повітрообмін у приміщеннях, у процесі якого забруднене або нагріте повітря віддаляється й на його місце подається свіже чисте повітря.

Системи опалення - це комплекс елементів, необхідних для опалення приміщень в холодний період року, нормованої температури повітря не нижче встановленої Держстандарт 12.1. 005-88 і СНіП 2.04. 05-91. У приміщеннях з електронно-обчислювальною технікою передбачають центральне опалення в сполученні із приточною вентиляцією або кондиціювання повітря при одне- і двозмінному режимах роботи, а при трьохзмінному - тільки повітряне опалення.

Гранично допустимі рівні напруги дотику і струмів при експлуатації і ремонті обладнання забезпечені:

застосуванням малої напруги;

ізоляцією струмоведучих мереж;

обґрунтуванням і оптимальним вибором елементної бази, що виключає передумови поразки електричним струмом;

правильного компонування, монтажу приладів і елементів;

дотриманням умов безпеки при настанові і заміні приладів і інше.

Захист від небезпечних впливів електричного струму при експлуатації обчислювальних комплексів забезпечені:

застосування захисного заземлення або обнуління;

ізоляцією струмопровідних частин;

дотриманням умов безпеки при настанові і заміні агрегатів;

надійним контактним сполученням з урахуванням перепаду кліматичних параметрів.

Для усунення причин утворення статичного заряду застосовуються провідні матеріали для покриття підлоги, панелей, робочих столів, стільців. Для зниження ступеня електризації і підвищення провідності діелектричних поверхонь підтримується відносна вологість повітря на рівні максимально допустимого значення.

На робочих місцях всі металеві та електропровідні неметалеві обладнання заземлені.

Ефективне рішення проблеми захисту від впливу шуму досягається проведенням комплексу заходів, в які входить ослаблення інтенсивності цього шкідливого виробничого чинника в джерелах і на шляху розповсюдження звукових хвиль.

Зниження виробничого шуму в приміщеннях, де розміщені ПЕОМ, досягається за рахунок акустичної обробки приміщення - зменшення енергії відбитих хвиль, збільшення еквівалентної площі звукопоглинаючих поверхонь, наявність в приміщеннях штучних звукопоглиначів.

З метою зниження шуму в самих джерелах встановлюються віброгасячі і шумогасячі прокладки або амортизатори. В якості засобів звукопоглинання застосовуються не горючі або тяжко горючі спеціальні перфоровані плити, панелі, мінеральна вата з максимальним коефіцієнтом поглинання в межах частот 31.5-8000 Гц.

Для створення нормальних умов роботи програмістів і операторів ПЕОМ в машинному залі використовується система кондиціювання, що забезпечує необхідні оптимальні мікрокліматичні параметри і чистоту повітря.

Електронно-променеві трубки, магнетрони, тиратрони та інші електровакуумні прилади, що працюють при напрузі вище 6 кВ, є джерелами „мякого рентгенівського випромінювання. При технічній експлуатації апаратури, в якій напруга вище 15 кВ, використовують засоби захисту для відвертання рентгенівського опромінення операторів і інженерно-технічних робітників, бо при такій напрузі рентгенівське випромінювання розсіюється в навколишньому просторі виробничого приміщення.

Шкідливий вплив рентгенівських променів звязаний з тим, що порушення міжмолекулярних звязків тканинної речовини може призвести до порушення нормальної течії біохімічних процесів і обміну речовин.

Засобами захисту від „мякого рентгенівського випромінювання є застосування поляризаційних екранів, а також використання в роботі моніторів, що мають біо-керамічне покриття і низький рівень радіації. В якості засобів захисту від чинності мяких рентгенівських променів застосовуються екрани з сталевого листа (0,5-1 мм) або алюмінію (3 мм), спеціальної гуми.

Для відвертання розсіювання рентгенівського випромінювання по виробничому приміщенню встановлюють захисні огорожі з різноманітних захисних матеріалів, наприклад, свинцю або бетону.

При правильно розрахованому і виконаному освітленні очі працюючого за компютером протягом тривалого часу зберігають здатність добре розрізняти предмети не втомлюючись. Це сприяє зниженню професійного захворювання очей, підвищується працездатність. Раціональне освітлення відповідає ряду вимог:

достатнє, щоб очі без напруги могли розрізняти деталі;

постійна напруга в мережі не коливається більше ніж на 4%;

рівномірно розподілено по робочим поверхням, щоб очам не приходилося зазнавати різкого контрасту кольорів;

не викликає дії, яка сліпить органи зору працюючого (зменшення блищання джерел, що відбивають світло, досягається застосуванням світильників, які розсіюють світло);

не викликає різких тіней на робочих місцях.

Задачею розрахунку є визначення необхідної потужності електричної освітлювальної установки для створення у виробничому приміщенні заданої освітленості. При проектуванні освітлювальної установки необхідно вирішити наступні основні питання:

вибрати тип джерела світла - рекомендуються газорозрядні лампи, за винятком місць, де температура повітря може бути менш +5°С і напруга в мережі падати нижче 90 % номінального, а також місцевого освітлення (у цих випадках застосовуються лампи розжарювання);

визначити систему освітлення (загальна локалізована або рівномірна, комбінована);

вибрати тип світильників з урахуванням характеристик світорозподілення, умов середовища (конструктивного виконання) та інше;

розподілити світильники і визначити їх кількість (світильники можуть матися в своєму розпорядженні рядами, в шаховому порядку, ромбоподібно);

визначити норму освітленості на робочому місці.

Для розрахунку штучного освітлення використовують в основному три методи. Найчастіше її розраховують по світловому потоку. Для цього визначається світловий потік кожної лампи по нормуючій мінімальній горизонтальній освітленості Еmin (лк) з вираження:=(Emin·S·K·z) / n1·n·N,


де F - світловий потік лампи в світильнику, лм;- площа приміщення, м2;- коефіцієнт запасу;- коефіцієнт нерівномірного освітлення;1 - коефіцієнт використання світлового потоку;- кількість ламп в світильнику;- число світильників.

Якщо освітлення здійснюється рядами люмінесцентних ламп, те вираження вирішується відносно N. Значення коефіцієнта n1 визначається по довіднику в залежності від типу світильника, коефіцієнтів відбивання стін Рс, стелі Рп, робітничій поверхні і від розмірів приміщення. Показник приміщення fi визначається з виразу:

i= А·В/Нр·(А+В),


де А і В - довжина і ширина освітленого приміщення, м;

Нр - висота підвісу світильника над робітничою поверхнею, м.

У випадку застосування люмінесцентних ламп потрібна кількість світильників N, яка визначається за формулою:

=Emin·S·K·z/F·n1·n


Поділивши число світильників N на число вибраних рядів світильників, визначають число світильників у кожному ряду.

Нехай зал має розміри А=8м, В=5м, h=3м, стеля обладнується світильниками Л201Б з люмінесцентними лампами ЛБ80.

Рівень робітничої поверхні над полом 0,8 м, при цьому Нр=2,2 м.

Показник приміщення рівний:i=40/2,2 (8+5)=1,3986


По довіднику визначаємо значення коефіцієнта n1 (для значень Рс=0,5, Рп=0,3): n1=0,7. Значення коефіцієнта нерівномірного освітлення приймаємо рівним 1,1, а коефіцієнта запасу - 1,5. При загальному типі освітлення значення Emin=400 лк. Знаючи значення світлового потоку кожної лампи, можемо визначити необхідну кількість світильників:

=400·8·5·1,5·1,1/5220·0,7·2=3(штук)


Загальна потужність освітлювальної установки рівна:


Р=2·80·3=480(Вт)


По результатах проведених розрахунків можна зробити висновок про те, що небезпечні і шкідливі виробничі чинники, діючи в робочій зоні, знаходяться в межах допустимих норм і їхній вплив на організм працюючих не приносить істотної шкоди здоровю.


7.3 Пожежна безпека


В системі заходів, направлених на охорону державної і особистої власності громадян, відвертання впливу на людей небезпечних чинників пожежі і вибуху, питання пожежної і вибухової безпеки займають важливе місце.

По класифікації приміщень з ПЕОМ по пожежній небезпеці відносяться до категорії В (СНіП 2.09.02-85), що характеризуються наявністю твердих горючих і важко горючих речовин і матеріалів, а також легкозаймистих матеріалів.

Причини пожежі:

паління за робочим місцем;

використовувати нагрівальні прилади в приміщеннях з ПЕОМ;

відєднувати і приєднування кабелів за не справності і наявності напруги

в мережі;

за наявністю не визначення напруги в ланцюзі, замиканням клем.

В електронно-обчислювальній техніці пожежну небезпеку створюють прилади, що нагріваються, електро- і радіотехнічні елементи. Вони нагрівають навколишнє повітря і близько розташовані деталі і провідники. Все це може призвести до займання означених елементів, руйнування ізоляції і короткого замикання.

Технологічні обємні підлоги виконуються з негорючих або тяжко горючих матеріалів з межею вогнестійкості не менше 0,5 г. Підпільні простори під обємними підлогами відділяють негорючими перегородками з межею вогнестійкості не менше 0,75 г на ділянки площею не більш 250 м2.

Для гасіння можливих пожеж передбачена наявність первинних засобів пожежогасіння, згідно «Правил пожежної безпеки в Україні» так і пожежні крани із брезентовими рукавами, пожежні щити (1 щит на 5000м2).

В кожній кімнаті знаходяться вогнегасники. Вогнегасники діляться на хімічні, пінні, повітряно-пінні, СО2 - вогнегасники і порошкові.

Вогнегасники допускаються до експлуатації якщо їхні технічні характеристики відповідають нормативним значенням, встановленим експлуатаційно-технічною документацією. Зменшення змісту вогнегасочої речовини і тиску у вогнегасниках не повинне перевищувати 10 % від встановленого номінального значення.

При розміщенні вогнегасників безпосередній вплив на них сонячних променів, опалювальних і нагрівальних пристроїв. За конструкцією, матеріалами, методами контролю, умовами змісту, обслуговуванням вогнегасники повинні відповідати вимогам Правил пристрою і безпечної експлуатації судин, що працюють під тиском.

Для успішного гасіння пожежі велике значення має швидке виявлення пожежі та своєчасний виклик пожежних підрозділів до місця пожежі. Пожежний звязок і сигналізація можуть бути спеціального або загального призначення, радіозвязком, електричною пожежною сигналізацією (ЕПС), сиренами. ЕПС є найбільш швидким та надійним засобом сповіщення про виникнення пожежі. В залежності від схеми зєднання розрізнюють променеві (радіальні) та шлейфні (кільцеві) системи ЕПС.

ЕПС складаються з таких основних частин: сповіщувачів, встановлених в приміщеннях; приймальної станції, яка знаходиться в черговій кімнаті пожежної команди; блока поживи від сіті та від акумулятора (резервний); системи переключення з одної поживи на іншу; електропровідній сіті, яка зєднує сповіщувачі з приймальною станцією.

В кімнаті з ПЕОМ розміщений сповіщувач (датчик) тепловий легкоплавкий. При збільшенні температури легкоплавкий сплав розплавляється і пружинячі пластинки, розмикаючись, вмикають ланцюг сигналізації.

У приміщенні знаходиться розроблений і розміщений на видному місці план евакуації людей і матеріальних цінностей при пожежі з яким ознайомлені працівники підприємства.



ВИСНОВКИ


Генератор псевдовипадкових чисел є алгоритмом, що генерує послідовність чисел, елементи якої майже незалежні один від одного і підкоряються заданому розподілу. Використання подібних генераторів в сучасній техніці украй важливо, оскільки на їх базі можуть створювати ключі для шифрування, різні захисні послідовності для тих або інших даних і пакетів даних і багато що інше.

Розробленій програмний продукт призначений для ілюстрації дослідження властивостей найбільш поширених алгоритмів генерації псевдовипадкових чисел. У розробленому програмному забезпеченні були використані наступні найбільш відомі та поширені алгоритми:

·"Середини квадрата" фон Неймана;

·Лінійний конгруентний метод;

·Фібоначчі із запізненням;

·Алгоритм Блюма - Блюма - Шуба;

·Вихор Мерсенна.

Для порівняльного дослідження статистичної якості даних алгоритмів був використаний теоретичний критерій оцінки якості «c-квадрат», на підставі якого були зроблені відповідні висновки.

У теорії ніякий детермінований алгоритм не може генерувати повністю випадкові числа, а тільки апроксимувати деякі властивості випадкових чисел. Тому у принципі будь-який генератор випадкових чисел на практиці завжди є лише генератором псевдовипадкових чисел, проте завдання розробника генератора полягає в тому, щоб зробити алгоритм якомога більш варіаційним. Як казав Джон фон Нейман: «Той, хто має схильність до арифметичних методів отримання випадкових чисел, грішний поза всяких сумнівів».



СПИСОК ЛІТЕРАТУРИ


1.Айерлэнд К., Роузен М. Классическое введение в современную теорию чисел // М.: Мир, 1987. - 416 с.

2.Большев Л.Н., Смирнов Н.В. Таблицы математической статистики. - М.: Наука, 1983. - 416 с.

.Булинский, А.В., Ширяев, А.Н. "Теория случайных процессов", М.: Физматлит, 2003.

.Гмурман, В.Е. "Руководство к решению задач по теории вероятностей и математической статистике": Учеб. пособие - 11-е изд., перераб. - М.: Высшее образование, 2006.-404 с.

.Гнеденко, Б.В. "Курс теории вероятностей", - М.: Наука, 1988.

.Горбань И.И. "Справочник по теории случайных функций и математической статистике", Киев: Институт кибернетики им. В.М. Глушкова НАН Украины, 1998.

.Горбань, И.И. "Теория гиперслучайных явлений", Киев: ИПММС НАН Украины, 2007.

.Дональд Кнут. Глава 3. Случайные числа // Искусство программирования, том 2. Получисленные методы. - 3-е изд. - М.: «Вильямс», 2007. - С. 832.

.Колемаев, В.А. и др. "Теория вероятностей и математическая статистика", - М.: Высшая школа, 1991.

.Крамер Г. Математические методы статистики. - М.: Мир, 1975. - 648 с.

.Кремер Н.Ш. Теория вероятностей и математическая статистика. - М.: Юнити, 2000. - 543 с.

.Лемешко Б.Ю. Статистический анализ одномерных наблюдений случайных величин: Программная система. - Новосибирск: Изд-во НГТУ, 1995. - 125 с.

.Лемешко Б.Ю., Постовалов С.Н. Система статистического анализа наблюдений и исследования статистических закономерностей // Материалы международной НТК "Информатика и проблемы телекоммуникаций". - Новосибирск, 2001. - С. 80-81.

.Мирвалиев М., Никулин М.С. Критерии согласия типа хи-квадрат // Заводская лаборатория. 1992. - Т. 58. - № 3. - С.52-58.

.Никулин М.С. О критерии хи-квадрат для непрерывных распределений // Теория вероятностей и её применение. 1973. - Т.XVIII. - № 3. - С.675-676.

.Рао. С.Р. Линейные статистические методы и их применения. - М.: Наука, 1968. - 548 с.

.Сархан А.Е., Гринберг Б.Г. Введение в теорию порядковых статистик. - М.: Статистика, 1970. - 414 с.

.Свирид, Г.П., Макаренко, Я.С., Шевченко, Л.И. "Решение задач математической статистики на ПЭВМ", Мн., Выш. шк., 1996.

.Строгалев В.П., Толкачева И.О. Имитационное моделирование. - МГТУ им. Баумана, 2008. - С. 697-737.

.Хемди А. Таха Глава 18. Имитационное моделирование // Введение в исследование операций = Operations Research: An Introduction. - 7-е изд. - М.: «Вильямс», 2007. - С. 697-737.

21.Coddington P. Analysis of Random Number Generators Using Monte-Carlo Simulation, Int. J. Mod. Phys. 1994. C. 5. 547 р.

.Entacher K., Uhl A., Wegenkittl S. Parallel Random Number Generation: Long- range Correlations Among Multiple Processors // In P. Zinterhof, M. Vajterљic, and A. Uhl, editors, Parallel Computation, volume 1557 of Lecture Notes in Computer Science, Springer, New York, 1999. P. 107-116.

.M. Matsumoto and T. Nishimura, Mersenne twister: A 623-dimensionally equidistributed uniform pseudorandom number generator, ACM Trans. on Modeling and Computer Simulations, 1998.

.Richard P. Brent, Uniform Random Number Generators for Supercomputers, Computer Sciences Laboratory; Australian National University Appeared in Proceedings Fifth Australian Supercomputer Conference (Melbourne, December 1992), 95-104. c 1992, 5ASC Organising Committee.

.Wolfram S. Random sequence generation by cellular automatat // Adv. Appl. Math. 7, 123 (1986).

26.Свободная Интернет-энциклопедия

.Исходные коды реализации различных алгоритмов

.Исходные коды и книги по алгоритмам.

.Библиотека численного анализа НИВЦ МГУ

.Интернет-университет информационных технологий

.Сайт института Математического моделирования РАН

.Сайт разработчика серии статистических тестов случайных чисел Diehard

.Сайт разработчиков генератора «Вихрь Мерсенна»


ДОДАТОК А


Вихідний текст файлів системи unit Unit1;


, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, TeEngine, Series, StdCtrls, ExtCtrls, TeeProcs, Chart, ComCtrls,, Buttons,MT19937;

= class(TForm): TPanel;: TPageControl;: TTabSheet;: TChart;: TPointSeries;: TTabSheet;: TGroupBox;: TGroupBox;: TSpinEdit;: TRadioGroup;: TBitBtn;: TLabel;: TLabel;: TEdit;: TLabel;: TEdit;: TLabel;: TEdit;: TLabel;: TEdit;: TCheckBox;: TGroupBox;: TLabel;: TLabel;: TEdit;: TComboBox;: TGroupBox;: TLabel;: TLabel;: TEdit;: TEdit;: TPanel;: TPanel;: TShape;: TShape;: TShape;: TShape;: TShape;: TPanel;_1: TShape;: TShape;: TShape;: TShape;: TShape;: TPanel;_1: TShape;: TShape;: TShape;: TShape;: TShape;: TLabel;: TLabel;: TLabel;: TGroupBox;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TGroupBox;: TShape;: TLabel;: TLabel;: TShape;: TLabel;: TLabel;: TShape;: TLabel;: TLabel;: TBitBtn;: TLabel;: TLabel;_1: TLabel;_2: TLabel;_1: TLabel;_2: TLabel;: TLabel;FormCreate(Sender: TObject);

BitBtn1Click(Sender: TObject);RadioGroup1Click(Sender: TObject);CheckBox1Click(Sender: TObject);Edit1KeyPress(Sender: TObject; var Key: Char);Edit2KeyPress(Sender: TObject; var Key: Char);Edit3KeyPress(Sender: TObject; var Key: Char);Edit4KeyPress(Sender: TObject; var Key: Char);PageControl1Change(Sender: TObject);BitBtn2Click(Sender: TObject);

{ Private declarations }

{ Public declarations };

: TForm1;:longint;:array[1..10] of integer;


{$R *.dfm}

TForm1.FormCreate(Sender: TObject);;TForm1.BitBtn1Click(Sender: TObject);

:array[1..100000] of double;,b,k,i,q,p,xb,j,t,e1,razr:integer;:double;:array[1..4] of double;:string;_l,m,c,x0,xk:integer;:boolean;RadioGroup1.ItemIndex=-1 then exit;.Caption:=RadioGroup1.Items[RadioGroup1.itemindex];.Clear;RadioGroup1.ItemIndex of

: begin:=0; f:=false;:=random(9999-1000)+1000;i:=1 to SpinEdit1.Value do:=sqr(y/10000);:=floattostrf(y,fffixed,10,8);

:=copy(s,5,4);:=strtofloat(s);(y=z[1]) and (f=false) then begin t:=i; f:=true; end;:=j+1; z[j]:=y; if j=4 then j:=0;

.AddXY(i,round(y),'',clRed);;t>0 then.Caption:='Период - '+inttostr(t-1)Label27.Caption:='Период >100 ';;


: beginCheckBox1.Checked theni:=1 to SpinEdit1.Value do:=random(10000);.AddXY(i,xk,'',clRed);;.Caption:='Период - '+Edit1.Text;


(Edit1.Text='') or (Edit2.Text='') or(Edit3.Text='') or (Edit4.Text='')

exit;:=strtoint(Edit1.Text);_l:= strtoint(Edit2.Text);:=strtoint(Edit3.Text);:=strtoint(Edit4.Text);

i:=2 to SpinEdit1.Value do:=(a_l*x0+c) mod m;:=xk;.AddXY(i,xk,'',clRed);;

;;


: beginComboBox1.ItemIndex of

: begin a:=55; b:=24; Label27.Caption:='Период - 36028797018963968';;

: begin a:=17; b:=5; Label27.Caption:='Период - 524288';end;

: begin a:=97; b:=33; Label27.Caption:='Период -

' end;

;:=strtoint(e.Text); razr:=1;i:=1 to e1 do:=razr*10;i:=1 to a do[i]:=random(99)/razr;i:=a+1 to SpinEdit1.Value+a dox[i-a]>=x[i-b]x[i]:=x[i-a]-x[i-b] else[i]:=x[i-a]-x[i-b]+1;.AddXY(i,round(x[i]*100),'',clRed);;;


3: begin

(Edit5.Text='') or (Edit6.Text='') then exit;:=strtoint(Edit5.Text);:=strtoint(Edit6.Text);:=random(100);i:=1 to SpinEdit1.Value do:= sqr(xb) mod p*q;

.AddXY(i,xb,'',clRed);;;


: begin for i:=1 to SpinEdit1.Value do.AddXY(i,genrand_MT19937,'',clRed);.Caption:= 'Период - 2^19937-1';

;

;

TForm1.RadioGroup1Click(Sender: TObject);.Caption:='';RadioGroup1.ItemIndex of

:begin GroupBox1.Visible:=false; GroupBox3.Visible:=false; .Visible:=false; end;

:begin GroupBox1.Visible:=true; GroupBox3.Visible:=false; .Visible:=false;end;

:begin GroupBox3.Visible:=true;GroupBox1.Visible:=false; .Visible:=false;end;

: begin GroupBox3.Visible:=false;GroupBox1.Visible:=false; .Visible:=true;end;

: begin GroupBox3.Visible:=false;GroupBox1.Visible:=false; .Visible:=false;end;;;

TForm1.CheckBox1Click(Sender: TObject);CheckBox1.Checked then.Text:='4294967296';.Text:='134775813';.Text:='1';.Enabled:=false;.ReadOnly:=true;.ReadOnly:=true;.ReadOnly:=true;

.Text:='';.Text:='';.Text:='';.Enabled:=true;.ReadOnly:=false;.ReadOnly:=false;.ReadOnly:=false;;;

TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);not (key in ['0'..'9',#13,#8]) then key:=#0;;

TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);not (key in ['0'..'9',#13,#8]) then key:=#0;;

TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);not (key in ['0'..'9',#13,#8]) then key:=#0;;

TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);not (key in ['0'..'9',#13,#8]) then key:=#0;;

TForm1.PageControl1Change(Sender: TObject);PageControl1.ActivePageIndex=1 then.Visible:=false;.Visible:=true;begin.Visible:=true;.Visible:=false; end;

;

TForm1.BitBtn2Click(Sender: TObject);xp:array[1..7]of real =(29.71,34.76,42.94,49.33,56.33,67.50,76.15);:array[1..7] of integer =(1,5,25,50,75,95,99);

ps:real;,x_mean:double;,st_sv,n,p_n,a,b:integer;:array[1..51] of longint;:array[1..1000] of real;:=51; //кількість випробувань_sv:=n-1; //ступень свободи:=1/n; //вірогідність:=0;_n:=0;


//лінійний конгурентний метод зі стандартними параметрами

i:=1 to n do:=random(99); //генерація випадкового числа:=v+sqr(x-n*ps)/n*ps; //;

i:=1 to 7 do

xp[i]>v then_n:=p[i];;;

((p_n=1) or (p_n=99))begin shape1.Shape:=stCircle;.Brush.Color:=clRed;((p_n=5) or (p_n=95))begin shape1.Shape:=stCircle;.Brush.Color:=clFuchsia;((p_n=10) or (p_n=90))begin shape1.Shape:=stCircle;.Brush.Color:=clYellow;shape1.Shape:=stRectangle;.Brush.Color:=clWhite;;

.Visible:=true;.Visible:=true;.Caption:='V='+floattostrf(v,fffixed,5,3);.Caption:='p='+inttostr(p_n)+'%';


//метод Ф:=97; b:=33; v:=0; p_n:=0;

i:=1 to a do[i]:=random(99)/100;i:=a+1 to n+a dox1[i-a]>=x1[i-b]x1[i]:=x1[i-a]-x1[i-b] else[i]:=x1[i-a]-x1[i-b]+1;:=v+sqr(x1[i]*100-n*ps)/n*ps;;

i:=1 to 7 do

xp[i]>v then_n:=p[i];;;

(p_n=1) or (p_n=99)begin shapef_1.Shape:=stCircle;_1.Brush.Color:=clRed;(p_n=5) or (p_n=95)begin shapef_1.Shape:=stCircle;_1.Brush.Color:=clFuchsia;(p_n=10) or (p_n=90)begin shapef_1.Shape:=stCircle;_1.Brush.Color:=clYellow;shapef_1.Shape:=stRectangle;_1.Brush.Color:=clWhite;;

_1.Visible:=true;_2.Visible:=true;_2.Caption:='V='+floattostrf(v,fffixed,5,3);_1.Caption:='p='+inttostr(p_n)+'%';

:=0; p_n:=0;


//m

i:=1 to n do:=v+sqr(genrand_MT19937/20000000-n*ps)/n*ps;;

i:=1 to 7 do


if xp[i]>v then_n:=p[i];;;(p_n=1) or (p_n=99)begin shapem_1.Shape:=stCircle;_1.Brush.Color:=clRed;(p_n=5) or (p_n=95)begin shapem_1.Shape:=stCircle;_1.Brush.Color:=clFuchsia;(p_n=10) or (p_n=90)begin shapem_1.Shape:=stCircle;_1.Brush.Color:=clYellow;shapem_1.Shape:=stRectangle;_1.Brush.Color:=clWhite;;

_1.Visible:=true;_2.Visible:=true;_2.Caption:='V='+floattostrf(v,fffixed,5,3);_1.Caption:='p='+inttostr(p_n)+'%';

;.

MT19937;

{$R-} {range checking off}

{$Q-} {overflow checking off}



{ Period parameter }N=624;

StateArray = array [0..MT19937N-1] of longint;

sgenrand_MT19937(seed: longint);

procedure lsgenrand_MT19937(const seed_array: tMT19937StateArray);randomize_MT19937;randInt_MT19937(Range: longint):longint;

function genrand_MT19937: longint;randFloat_MT19937: Double;



{ Period parameters }M=397;MATRIX_A =$9908b0df;UPPER_MASK=$80000000;LOWER_MASK=$7fffffff;_MASK_B=$9d2c5680;_MASK_C=$efc60000;


: tMT19937StateArray;: integer=MT19937N+1;

sgenrand_MT19937(seed: longint);: integer;i := 0 to MT19937N-1 do begin[i] := seed and $ffff0000;:= 69069 * seed + 1;[i] := mt[i] or ((seed and $ffff0000) shr 16);:= 69069 * seed + 1;;:= MT19937N;;


{by "sgenrand_MT19937()" is an example. Theoretically,are 2^19937-1 possible states as an intial state.function (lsgenrand_MT19937) allows to choose any of 2^19937-1 .bits in "seed_array[]" is following 19937 bits:

(seed_array[0]&MT19937UPPER_MASK), seed_array[1], ..., _array[MT19937-1].

(seed_array[0]&MT19937LOWER_MASK) is discarded.,

(seed_array[0]&MT19937UPPER_MASK), seed_array[1], ..., _array[MT19937N-1]take any values except all zeros.

}lsgenrand_MT19937(const seed_array: tMT19937StateArray);: integer;i := 0 to MT19937N-1 do mt[i] := seed_array[i];:= MT19937N;;

genrand_MT19937: longint;: array [0..1] of longint =(0, MT19937MATRIX_A);: longint;: integer;mti >= MT19937Nbeginmti = (MT19937N+1) then_MT19937(4357);kk:=0 to MT19937N-MT19937M-1 do begin:= (mt[kk] and MT19937UPPER_MASK) or (mt[kk+1] and LOWER_MASK);[kk] := mt[kk+MT19937M] xor (y shr 1) xor mag01[y and $00000001];;kk:= MT19937N-MT19937M to MT19937N-2 do begin:= (mt[kk] and MT19937UPPER_MASK) or (mt[kk+1] and LOWER_MASK);[kk] := mt[kk+(MT19937M-MT19937N)] xor (y shr 1) xor mag01[y and

$00000001];;:= (mt[MT19937N-1] and MT19937UPPER_MASK) or (mt[0] and LOWER_MASK);[MT19937N-1] := mt[MT19937M-1] xor (y shr 1) xor mag01[y and

$00000001];:= 0;;:= mt[mti]; inc(mti);:= y xor (y shr 11);:= y xor (y shl 7) and TEMPERING_MASK_B;:= y xor (y shl 15) and TEMPERING_MASK_C;:= y xor (y shr 18);:= y;;


{ Delphi interface }

Randomize_MT19937;OldRandSeed: longint;:= System.randseed;.randomize;

sgenrand_MT19937(System.randSeed);.randseed := OldRandSeed;;


asmEAXgenrand_MT19937EDXEDXEAX,EDX;

RandFloat_MT19937: Double;Minus32: double = -32.0;genrand_MT199370EAXMinus32qword ptr [ESP]ESP,8ST(1);.


Міністерство освіти та науки України Криворізький інститут Кременчуцького університету економіки, інформаційних технологій та управління Кафедра технічної

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ