如何在love2D中生成随机十进制数?
How to generate a random decimal number in love2D?
我尝试使用以下代码在 love2d 中生成一个介于(假设介于 0.3 和 0.8 之间)之间的随机十进制数:
x=math.random(0.3, 0.8)
print(x)
但是每次我 运行 程序和 0.4 中的 0 闪烁时它都会生成 0.3(从某种意义上说它变成了 1)。
如果有帮助,请看这里的屏幕记录https://vimeo.com/632949687
检查功能
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
您的问题未明确说明。这里有两个简单的解决方案;它们不等同。
这会生成集合 {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()
在 LÖVE 中有 random()
的平台独立版本。
https://love2d.org/wiki/love.math.random
无需使用 math.randomseed()
或 love.math.setRandomSeed()
.
对于 0 和 1 范围内的浮点数,只需使用...
love.math.random()
'but what happens is it generates 0.3 every single time'
同样在这里,所以最简单的方法似乎是@lhf'示例。
我尝试使用以下代码在 love2d 中生成一个介于(假设介于 0.3 和 0.8 之间)之间的随机十进制数:
x=math.random(0.3, 0.8)
print(x)
但是每次我 运行 程序和 0.4 中的 0 闪烁时它都会生成 0.3(从某种意义上说它变成了 1)。
如果有帮助,请看这里的屏幕记录https://vimeo.com/632949687
检查功能
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
您的问题未明确说明。这里有两个简单的解决方案;它们不等同。
这会生成集合 {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()
在 LÖVE 中有 random()
的平台独立版本。
https://love2d.org/wiki/love.math.random
无需使用 math.randomseed()
或 love.math.setRandomSeed()
.
对于 0 和 1 范围内的浮点数,只需使用...
love.math.random()
'but what happens is it generates 0.3 every single time'
同样在这里,所以最简单的方法似乎是@lhf'示例。