Math.random对非整数的操作

如何生成小于1的数字?

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

我尝试过:

math.random(0.1,0.9)
点赞
用户2478565
用户2478565

你可以使用 math.random()(无参)生成一个 0 到 1 之间的数字,并使用它来在两个目标数字之间进行混合。

-- 生成在 a(包含)和 b(不包含)之间的随机实数
function rand_real(a, b)
    return a + (b - a) * math.random()
end
2013-07-15 22:06:58
用户827263
用户827263

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

请记住大部分实数在浮点数中无法完全准确地表示。

2013-07-15 22:07:33
用户2403309
用户2403309

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

这个代码生成一个10到90之间的数字,并且通过除以100得到0.1到0.9之间的数字。

2013-07-15 22:12:24