Архив метки: rand

C — диапазон случайных чисел от 10 до -10

#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