2

如何生成小于 1 的数字?

例如我想生成从 0.1 到 0.9 的数字

我试过的:

math.random(0.1,0.9)
4

3 回答 3

11

带有两个参数的Luamath.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

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

于 2013-07-15T22:07:33.330 回答
2

您可以使用math.random()(no args) 生成一个介于 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
于 2013-07-15T22:06:58.093 回答
0
(math.random(10,90)) / 100

这会生成一个从 10 到 90 的数字,除法会给您一个从 0.1 到 0.9 的数字。

于 2013-07-15T22:12:24.583 回答