These are variations of the rnd() function, but these return integers. You can either give just a maximum value or an arbitrary minimum and maximum value. You can also choose whether you want the maximum value to be exclusive or inclusive.
--random int between 0,h function rand(h) --exclusive return flr(rnd(h)) end function randi(h) --inclusive return flr(rnd(h+1)) end --random int between l,h function randb(l,h) --exclusive return flr(rnd(h-l))+l end function randbi(l,h) --inclusive return flr(rnd(h+1-l))+l end |
Excellent stuff @MBoffin - will definitely save having to think this out every time (and no-doubt fixing bugs coz I won't get it right first time!).
Thanks buddy! ;-)
Ha, wow. This is really old. :D Now that it's been about 2 years (!) since I posted this, I can honestly say the one of these four that I use the most by far is the inclusive random integer function. To the point where that's often the only variation I'll put in my code.
Glad these were useful. :)
May I publish some or all of your code, or derivatives, in https://github.com/sparr/pico8lib ?
Hi @MBoffin. Gold star for this information !
Here is a variation I use that ensures no matter the order the input, you still get the correct results.
-- return random # from a to b function rand(a,b) if (a>b) a,b=b,a return a+flr(rnd(b-a+1)) end--rand(..) |
INPUT: two numbers
RETURNS: integer number including and between both numbers.
USES:
print rand(1,6) ... dice
print rand(1,52) ... pick a card
print rand(9,-4) ... will pick # including and between negative 4 and positive 9.
[Please log in to post a comment]