I need to produce a random number ranging between 2 and 5 which is different each time. For example, I don’t want two 3’s in a row, or two 5’s in a row. I then have to feed this into a for() loop, like this:
for(var i = 0; i < noBoxes.length; i+=randNumber) {
//....
}
How do I go about doing this?
Generate a random number up to n-1 and add it on, modulo the original range (shifting because the min is not 0):
This works because it adds up to 1 below the range, so it can never get back to the original number. For example, i=3, random int 0 to 2, so the max is (i-2+2)%3+2=3%3+2=0+2=2.
So if i=3, then i-min is 1, the range after adding the delta is 2,3,4, modulo 4 yielding 2,3,0, so adding the min gives us 4,5,2.