I'm new to C and I'm reading a book about it. I just came across the `rand()` function. The book states that using `rand()` returns a random number from 0 to 32767. It also states that you can narrow the random numbers by using `%` (modulus operator) to do so.  

Here is an example: the following expression puts a random number from 1 to 6 in the variable `dice`

```
dice = (rand() % 5) + 1;

```

I'm unable to get a remainder of 5 as any number from 0 to 33767 `% 5` is equal to 0 to 4, but never 5. 

Shouldn't it be `% 6` in the above statement instead?

For example, if I choose randomly a number between 0 and 32767, let's say 75, then: 

```
75 % 5 == 0
76 % 5 == 1
77 % 5 == 2
78 % 5 == 3
79 % 5 == 4
80 % 5 == 0
Etc.

```

So regardless of the random number between 0 and 32767, the remainder will never be 5, so it will not be possible to get a 6 number for the dice (as per the above statement).

Not sure if you will understand what I mean but your help would be much appreciated.