Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Генерація випадкових чисел.

Читайте также:
  1. ГЛАВА ПЕРВАЯ О СМЫСЛЕ ЧИСЕЛ....................................................................... 106
  2. Множества чисел.
  3. Проверка равномерности распределения генератора с лучайных чисел.

Елемент випадковості може бути введений в програмі за допомогою функції 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.| Аннотация

mybiblioteka.su - 2015-2024 год. (0.007 сек.)