如何在love2D中生成一个随机十进制数?

我试图使用以下代码在love2d中生成一个随机十进制数(假设在0.3到0.8之间):

x=math.random(0.3, 0.8)
print(x)

但是每次运行程序时它都会生成0.3,而0.4中的0会闪烁(在某种意义上它会变成1)。

如果有帮助的话,以下是发生情况的屏幕录像https://vimeo.com/632949687

原文链接 https://stackoverflow.com/questions/69586113

点赞
stackoverflow用户12699001
stackoverflow用户12699001

检查函数

function random(min, max, precision)
    local precision = precision or 0
    local num = math.random()
    local range = math.abs(max - min)
    local offset = range * num
    local randomnum = min + offset
    return math.floor(randomnum * math.pow(10, precision) + 0.5) / math.pow(10, precision)
end
2021-10-15 14:17:25
stackoverflow用户107090
stackoverflow用户107090

将下面翻译成中文并且保留原本的 markdown 格式

你的问题没有明确的规定。这里有两个简单的解决方案;它们并不相等。

这个函数生成了一个集合 {0.3, 0.4, 0.5, 0.6, 0.7, 0.8} 中的随机数:

math.random(3,8)/10

这个函数生成了在区间 [0.3,0.8) 中的随机数:

0.3+(0.8-0.3)*math.random()
2021-10-15 14:45:39
stackoverflow用户11740758
stackoverflow用户11740758

在LÖVE引擎中,有一个平台无关的版本random()https://love2d.org/wiki/love.math.random

使用它无需使用math.randomseed()love.math.setRandomSeed()

对于范围在0和1之间的浮点数,只需使用...

love.math.random()

“但是每次它生成0.3”

我也有同样的问题,所以最简单的方法似乎是使用@lhf的例子。

2021-10-16 07:16:34