Перейти к основному содержимому

Для программ на C

к сведению

Данная статья основана на материале статьи "Generating random number in a range in C".

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

num = (rand() % (upper - lower + 1)) + lower

Временная сложность: O(N) где N - количество генерируемых случайных чисел.

Пример реализации генерации числа из диапазона

#include <stdio.h>
#include <time.h> // time
#include <stdlib.h> // srand, rand
#include <locale.h>


// Генерировать случайного целого числа из диапозона [lower, upper].
int iRandom(int lower, int upper) {
// https://www.geeksforgeeks.org/generating-random-number-range-c/
int num = (rand() % (upper - lower + 1)) + lower;
return num;
}


int main() {
setlocale(LC_ALL, "Russian");

// это значение можно считать с клавиатуры
int lower = 1, upper = 10;

// использовать текущее время в качестве
// начальное значение для генератора случайных чисел
srand(time(0));

// сброс первого числа, чтобы не
// повторялось, пока srand не изменяется
rand();
int num = iRandom(lower, upper);
printf("Случайное число из диапазона [%d, %d]: %d\n", lower, upper, num);

return EXIT_SUCCESS;
}