i am not quite sure how this function in c++ works:
int rand_0toN1(int n) {
return rand() % n;
}
Another tutorial on internet says to get a random number between a range you need to do something different however, with a being first number in range and n is number of terms in range:
int number = a + rand( ) % n;
I have read that it is supposed to return a random number between the value of 0 and n-1, but how does it do that? I understand that % means divide and give the remainder (so 5 % 2 would be 1) but how does that end up giving a number between 0 and n-1? Thanks for help in understanding this. I guess i don’t understand what the rand() function returns.
The modulo (remainder) of division by n > 0 is always in the range [0, n); that’s a basic property of modular arithmetic.
a + rand() % ndoes not return a number in the range [0, n) unless a=0; it returns anintin the range [a, n + a).Note that this trick does not in general return uniformly distributed integers.