#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int tmp = 10;
for (int i = 0; i < 20; i++){
printf( "Cлучайное для числа %d из диапазона -10 до 10 = %d\n", tmp--, rand() % 21 + (-10));
}
return 0;
}
Что происходит именно в
rand() % 21 + (-10)
функция rand() выдаёт значение от 0 до 2^15 - 1 (32767)
rand() % 21 вычисляет остаток от деления полученного случайного числа на 21 (т.е. от 0 до 20).
поскольку остатки цикличны таким образом реализуется генерация случайного числа от 0 до 20 включительно
+ (-10) смещает случайное число влево на 10, т.е. вместо случайного числа в диапазоне 0..20 получается случайное число в диапазоне -10..10