Как правильно задать диапазон рандомных чисел функцией rand?

В языке программирования C для генерации псевдослучайных чисел с помощью функции rand необходимо задать диапазон верхнего и нижнего пределов. Однако, сама функция rand генерирует числа в диапазоне от 0 до RAND_MAX, которое может варьироваться в зависимости от реализации компилятора. Таким образом, чтобы получить случайное число в заданном диапазоне, необходимо использовать некоторые математические операции.

Давайте представим, что нам нужно сгенерировать случайное целое число в диапазоне от min_value до max_value. Сначала мы вычисляем разницу между max_value и min_value, а затем добавляем это значение к результату вызова rand. Итак, чтобы получить случайное число в нужном диапазоне, следует использовать следующую формулу:

int random_number = min_value + rand() % (max_value - min_value + 1);

Где min_value - нижний предел диапазона, max_value - верхний предел диапазона.

Обратите внимание на оператор %, который возвращает остаток от деления. Он используется, чтобы ограничить верхнюю границу результатом вызова rand, так как она может быть больше диапазона (max_value - min_value + 1). Остаток от деления на (max_value - min_value + 1) гарантирует, что результат будет находиться в нужном диапазоне.

Например, если мы хотим сгенерировать случайное число в диапазоне от 1 до 10, мы можем использовать следующий код:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    int min_value = 1;
    int max_value = 10;
    srand(time(NULL));

    int random_number = min_value + rand() % (max_value - min_value + 1);
    printf("Random number: %dn", random_number);
    return 0;
}

В этом примере мы также используем функцию srand вместе с time(NULL), чтобы инициализировать генератор псевдослучайных чисел seed'ом, который зависит от системного времени. Это помогает получить более случайные результаты при каждом запуске программы.