![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Элемент случайности может быть введен в компьютерные приложения с помощью функции rand из стандартной библиотеки С++. Рассмотрим следующий оператор:
i = rand ();
Функция rand генерирует целое число в диапазоне от 0 до RAND_MAX (символическая константа, определенная в заголовочном файле <cstdlib>). Значение RAND_MAX для Visual Studio равно 32767. Если функция rand действительно вырабатывает случайные целые, то при очередном вызове rand шансы быть выбранным (т.е. вероятность) равны для всех чисел из диапазона от 0 до RAND_MAX.
Диапазон значений, которые непосредственно вырабатываются функцией rand, часто отличается от того, который требуется конкретному приложению. Например, программа, имитирующая бросание монеты, требует только двух значений: 0 — для «орла» и 1 — для «решки». Программе, имитирующей бросание игральной кости с шестью гранями, потребовались бы случайные числа в диапазоне от 1 до 6. Программе, которая случайным образом определяет тип следующего космического корабля (из четырех возможных), появляющегося на горизонте в видеоигре, потребовались бы случайные числа от 1 до 4.
Бросание игральной кости
Чтобы продемонстрировать rand, давайте разработаем программу (рис. 5.1), которая имитирует 20 бросков шестигранной игральной кости и печатает результат каждого броска. Прототип функции rand находится в <cstdlib>. Для того, чтобы выработать целые числа в диапазоне от 0 до 5, используем в сочетании с rand операцию взятия по модулю %:
rand () % 6
Это называется масштабированием. Число 6 называется масштабирующим коэффициентом. Затем мы смещаем диапазон чисел, прибавляя к полученному результату единицу. Окно вывода на рис. 5.1 подтверждает, что результаты лежат в диапазоне от 1 до 6.
// randExample.cpp: Defines the entry point for the console application.
//
// Смещенные и масштабированные случайные целые числа
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <iomanip> // обеспечивает работу манипулятора setw
#include <cstdlib> // содержит прототип для функции rand
int _tmain(int argc, _TCHAR* argv[])
{
// poftorit' 20 raz
for (int counter = 1; counter <= 20; counter++)
{
// poluchit' cluchainoe chislo ot 1 do 6 i vyvesti ego
cout << setw (5) << (1+ rand () % 6);
// esli counter delitcya na 5, nachat' novuu stroku
if (counter % 5 == 0)
cout << endl;
} // end for
// zaderzhka ekrana
char ch;
cin >> ch;
return 0;
} // end main
□
Рис. 5.1. Смещенные масштабированные числа, генерируемые выражением
1 + rand() % 6
Дата публикования: 2014-12-11; Прочитано: 268 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!