ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Пример генерации случайных чисел.
Элемент случайности может быть введен в компьютерные приложения с помощью функции 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
Не нашли, что искали? Воспользуйтесь поиском:
|