Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 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 - масштабуючий коефіцієнт (який дорівнює ширині необхідного діапазону цілих чисел), а а - величина зсуву (яка дорівнює першому числу в необхідному діапазоні послідовних цілих чисел).

 


<== предыдущая | следующая ==>
Питомий опір деионизированной води (див. Також: Бидистиллят) - 10-20 МОм | Рабочая программа. 1. Цели и задачи освоения дисциплины «Теория государства и права»

Date: 2015-10-18; view: 426; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию