Читайте также: |
|
Елемент випадковості може бути введений в програмі за допомогою функції 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 - масштабуючий коефіцієнт (який дорівнює ширині необхідного діапазону цілих чисел), а а - величина зсуву (яка дорівнює першому числу в необхідному діапазоні послідовних цілих чисел).
Дата добавления: 2015-07-12; просмотров: 68 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Уголовное право. учебник / Под ред. Л.Д. Гаухмана, С.В. Максимова. - М.: Элит, 2007. – Гл. 3-8. | | | Аннотация |