Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Генерація випадкових чиселЕлемент випадковості може бути введений в програмі за допомогою функції rand із стандартної бібліотеки С++. Розглянемо наступного оператора: і = rand(); Прототип функції rand можна знайти в <stdlib.h>. Функція rand генерує ціле число в діапазоні між 0 і RAND_MAX (символічна константа, визначена в заголовному файлі <stdlib.h>). Значення RAND_MAX повинне бути щонайменше рівне 32767 - максимальне позитивне значення двобайтового (тобто 16-бітового) цілого числа. Щоб продемонструвати rand, розробимо програму моделювання 20 кидань шестигранної гральної кістці з друком результату кожного кидання. Для того, щоб отримати цілі числа в діапазоні від 0 до 5, використовуємо операцію обчислення залишку % у поєднанні з rand: rand() % 6 Це називається масштабуванням. Число 6 називається масштабуючим коефіцієнтом. Потім ми зрушуємо діапазон чисел, додаючи 1 до отриманого результату. Приклад 4. Повторне виконання цієї програми приводить до того ж результату. Приклад 5. Щоб показати, що ці числа мають приблизно однакову вірогідність появи, промоделюємо за допомогою програми 6000 кидань грального кістці. Кожне ціле число від 1 до 6 повинно з'явитися приблизно 1000 разів. Функція rand насправді генерує псевдовипадкові числа. Та ж сама послідовність повторюється при кожному запуску програми. Коли програма ретельно відладжена, вона може бути використана для отримання різних послідовностей випадкових чисел при кожному виконанні. Це називається рандомізацією і реалізується в закінченому вигляді за допомогою стандартної бібліотечної функції srand. Функція srand отримує цілий аргумент unsigned і при кожному виконанні програми задає початкове число, яке функція rand використовує для генерації послідовності квазівипадкових чисел. Використання srand демонструється наступною програмою:
Приклад 6. При прогоні програми з різними початковими значеннями кожного разу виходять різні послідовності випадкових чисел. Щоб не вводити кожного разу початкове число, можна використовувати оператора, подібного наступному: srand (time(NULL)); При цьому для автоматичного отримання початкового числа комп'ютер прочитує показання свого годинника. Функція time (з аргументом NULL) повертає поточний «календарний час» в секундах. Це значення перетвориться в беззнакове ціле число і використовується як початкове значення в генераторі випадкових чисел. Прототип функції time знаходиться в <time.h>. Значення, що генерується функцією rand, завжди знаходиться в діапазоні: 0 < rand() < RAND_MAX Записати отримання цілих випадкових чисел, в заданому діапазоні, в загальному вигляді можна так: n = rand() % b + a; де b - масштабуючий коефіцієнт (який дорівнює ширині необхідного діапазону цілих чисел), а а - величина зсуву (яка дорівнює першому числу в необхідному діапазоні послідовних цілих чисел).
|