关于非整数的Math.random

时间:2013-07-15 22:02:11

标签: lua corona

如何生成小于1的数字?

例如,我想生成0.1到0.9之间的数字

我尝试了什么:

math.random(0.1,0.9)

3 个答案:

答案 0 :(得分:11)

Lua的math.random()有两个参数,返回指定范围内的整数。

当不带参数调用时,它返回一个介于0.0和1.0之间的伪随机实数。

要获得指定范围内的实数,您需要自己进行缩放;例如:

math.random() * 0.8 + 0.1

会给出一个0.1到0.9之间的随机实数。更一般地说:

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

如果愿意,可以将它包装在你自己的函数中。

但我会注意到这是一个相当奇特的范围。如果你真的想要一个从0.1,0.2,0.3,0.4,...,0.9中选择的随机数,那么你应该生成一个1到9范围内的整数,然后除以10.0:

math.random(1, 9) / 10.0

请记住,大多数实数不能用浮点表示。

答案 1 :(得分:2)

您可以使用math.random()(无参数)生成介于0和1之间的数字,并使用它来混合两个目标数字。

-- generates a random real number between a (inclusive) and b (exclusive)
function rand_real(a, b)
    return a + (b - a) * math.random()
end

答案 2 :(得分:0)

(math.random(10,90)) / 100

这将生成一个10到90之间的数字,并且除法为您提供0.1到0.9之间的数字。