Math.random on non whole numbers

coronasdk, lua

Solution

Lua's `math.random()` with two arguments returns an integer within the specified range.

When called with no arguments, it returns a pseudo-random real number in between 0.0 and 1.0.

To get real numbers in a specified range, you need to do your own scaling; for example:

math.random() * 0.8 + 0.1

will give you a random real number between 0.1 and 0.9. More generally:

math.random() * (hi - lo) + lo

which you can wrap in your own function if you like.

But I'll note that that's a fairly peculiar range. If you really want a random number selected from 0.1, 0.2, 0.3, 0.4, ..., 0.9, then you should generate an integer in the range 1 to 9 and then divide it by 10.0:

math.random(1, 9) / 10.0

Keep in mind that most real numbers cannot be represented exactly in floating-point.

Problem

How can I generate numbers that are less than 1? for example i would like to generate numbers from 0.1 to 0.9 what I've tried: ``` math.random(0.1,0.9) ```

Original source