Совет Как

Как сгенерировать случайное число в диапазоне отрицательных чисел? С++

Генерация случайных чисел в С++ обычно осуществляется с использованием библиотеки random. Однако, при генерации отрицательных чисел необходимо учитывать особенности реализации типа данных int.

Использование функции rand()

Функция rand() возвращает случайное число, лежащее в диапазоне от 0 до RAND_MAX. RAND_MAX - это константа, определяющая максимальное значение, которое может вернуть функция rand().

Для генерации случайных отрицательных чисел можно использовать следующий подход:

int random_number = rand() % (upper - lower + 1) + lower;

где lower и upper - нижняя и верхняя границы диапазона соответственно.

Однако, в данном подходе есть две проблемы:

  1. В случае, когда нижняя граница отрицательна, получается некорректное значение.
  2. Количество возможных значений генерируемого числа не является равномерным.

Использование библиотеки random

Чтобы решить эти проблемы, можно использовать библиотеку random. Для генерации случайных отрицательных чисел можно использовать следующий код:

#include <random>

std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<int> dis(lower, upper);

int random_number = dis(gen);

где lower и upper - нижняя и верхняя границы диапазона соответственно.

В этом случае генерируемые числа будут равномерно распределены в данном диапазоне, включая отрицательные числа.

Выводы

Генерация случайных отрицательных чисел в С++ может быть выполнена с использованием библиотеки random. Такой подход гарантирует равномерное распределение генерируемых чисел в заданном диапазоне.