Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 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

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных