Używanie funkcji rand()

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



int main()
{
int tab[15];
int i;
srand(time(0));
for(i=0; i<=14;i++)
{
tab[i]=(7+rand()%20);
printf("Kolejne wartosci to: %d\n",tab[i]);
}
return 0;
}

Mam takie pytanie jakich tu bibliotek brakuje. I dlaczego rand nie wybiera mi liczb z zakresu <7;20>

0

#define rand_zakres(min,max) (rand(max-min) + min);

Możesz mi wyjaśnić skąd się bierze te rand(max-min) + min)
Dlaczego nie może być po prostu rand(max) + min?

0

rand(20) wybiera liczbę z zakresu <0; 19> Jeżeli dodasz do tego 7 to będzie przedział <7; 26>
rand(20 - 7) + 7 = rand(13) + 7 losuje z zakresu <7; 19>
powinno być

#define rand_zakres( min, max ) ( rand( max - min + 1 ) + min )
2

Co to za herezje w tym wątku, rand nie przyjmuje parametrów i zwraca liczbę od 0 do RAND_MAX.

int random_number = rand() / (RAND_MAX / (max - min + 1) + 1) + min;

1 użytkowników online, w tym zalogowanych: 0, gości: 1