+ 5
Using rand
How rand is used to get random numbers in specific range??? Very much confusion on this concept
2 Respostas
+ 6
By default, rand() returns a number in the range 0 to RAND_MAX. The value of this constant value is quite large and varies according to numeric limits.
Now, we can use rand to return a number in the range 0 to x-1, by doing :
rand() % x;
Now, If the range was 0 to RAND_MAX, the new range is 0 to x, as the modulo operation returns the remainder of a division by x, and every remainder will be less than x (and the range is x-1, as if the remainder is equal to x , it can still be divided to get a remainder 0.).
Now, If you want a number in the range L to U, where L is the lower limit and U is the upper one, you do :
L + (rand()%(U-L+1));
This is done as :
>> 0 <= rand()%x <= x-1
// Default range for rand%x, where x
// is the number to be found.
>> L <= L+(rand()%(x)) <= L+x-1
// To increase the lower range, we simply
// add L to the entire equation.
>> L <= L+(rand()%(x)) <= U
// Now, we assume that with the chosen
// x, the range is L to U.
So, L+x-1 = U => x = U-L+1.
Thus,
L <= L+(rand()%(U-L+1)) <= U
And this way, rand returns a number in the range L to U.
+ 3
thx a lot Kinshuk 😊