Генерирование случайных чисел

Ответить
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Генерирование случайных чисел

Сообщение ya »

Код: Выделить всё

11 Программа Die Roller
// Демонстрирует генерирование случайных чисел
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std:
int main()
{
srand(static_cast<unsigned int>(time(0))):
// запускаем генератор случайных чисел
int randomNumber = rand(); // генерируем случайное число
int die = (randomNumber % 6) + 1; // получаем число между 1 и 6
cout << "You rolled а " << die << endl;
return 0;
}
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: Генерирование случайных чисел

Сообщение ya »

Функция rand() генерирует случайное число в диапазоне от 0 до как минимум 32 767. Точный верхний
предел зависит от реализации языка С. Значение верхнего предела хранится в константе
RAND_MAX, определяемой в библиотеке cstdlib. Итак, если вы хотите узнать, какое максимальное
случайное число может сгенерировать функция rand(), просто пошлите константу RAND_MAX в cout.
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: Генерирование случайных чисел

Сообщение ya »

Следующий код выполняет посев генератора случайных чисел:
srand(static_cast<unsigned int>(time(0))):
// посев генератора случайных чисел
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: Генерирование случайных чисел

Сообщение ya »

Сгенерировав случайное число, мы записываем в переменную randomNumber числовое
значение из диапазона от 0 до 32 767 (именно таковы верхний и нижний
пределы диапазона целых чисел в той реализации языка С++, с которой
я работаю). Но мне требуется число в диапазоне от 1 до 6, поэтому далее я применяю
оператор остатка по модулю, чтобы получить число именно из этого диапазона:
int die = CrandomNumber % 6) + 1;
// получаем число в диапазоне от 1 до 6
Любое положительное число, деленное на 6, даст остаток в диапазоне от 0 до 5.
В приведенной строке кода я беру этот остаток и прибавляю к нему 1. В результате
получаю положительное число в диапазоне от 1 до 6 - именно этого мы и добивались.
Можете пользоваться таким приемом для преобразования случайного числа
в число из нужного вам диапазона.
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: Генерирование случайных чисел

Сообщение ya »

компьютер выбирает случайное число, допустим, в диапазоне от 1 до 100,
а игрок пытается угадать это число с наименьшего количества попыток. Всякий
раз, когда пользователь вводит вариант, компьютер сообщает ему, насколько близко
это число расположено к загаданному: слишком много, слишком мало или 4ПОчти-
почти•.

Код: Выделить всё

// Игра Guess Му Number
// Классическая игра в угадывание чисел
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
srand(static cast<unsigned int>(time(O))): // запускаем генератор случайных чисел
intsecretNumber = rand() % 100 + 1: //случайное число в диапазоне от 1до100
int tries = 0:
int guess:
cout « "\tWelcome to Guess Му Number\n\n":
}
Соэдание игрового цикла

Код: Выделить всё

do
{
	cout « "Enter а guess:
	cin » guess:
	++tries:
	if (guess > secretNumber)
	{
		cout « "Тоо high!\n\n";
	}
	else if (guess < secretNumber)
	{
		cout « "Тоо low!\n\n";
	}
	else
	{
		cout « "\nThat's it! You got it in" « tries « "guesses!\n";
	}
} while (guess != secretNumber);
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: Генерирование случайных чисел

Сообщение ya »

В файле cstdliЬ содержатся функции, предназначенные для генерирования случайных
чисел.

Функция srand(), определенная в файле cstdlib, выполняет посев генератора
случайных чисел.

Функция rand( ), определенная в файле cstdliЬ, возвращает случайное число.
Ответить