这是我的代码
while true do
script.Parent.Position = Vector3.new((math.random(-41.994,15.471)),0.5,(math.random(129.514,69.442)))
script.Parent.Color = Color3.new(math.random(0,255), math.random(0,255), math.random(0,255))
wait(1)
end
我使用的编程语言是Lua
当我尝试使用此代码时,出现此错误:
"15:50:47.926 - Workspace.rock outer walls.Model.Rocks.Part0.Script:2: bad argument #2 to 'random' (interval is empty)"
该代码的目的是将脚本所在的部分随机传送到周围,但不远,并且在同一y轴上。
有人可以给我一些解释吗
Ps。前一阵子我在这个网站上发表了一个粗鲁的帖子,因为我对如何做很多事情感到困惑,现在我对一些事情有了更好的了解,所以我要为我的愚蠢〜Zeeen道歉
答案 0 :(得分:2)
在Lua中,math.random
可以称为3种方式:
它不接受-41.994
或15.471
之类的值,这就是为什么您会收到错误消息。
如果您将值更改为-41
或15
,就不会再看到错误。
Lua 5.3参考手册:http://www.lua.org/manual/5.3/manual.html#pdf-math.random
math.random([m [,n]])
在不带参数的情况下调用时,返回伪随机浮点数,其均匀分布范围为[0,1)。当使用两个整数m和n调用时,math.random返回一个伪随机整数,该整数在[m,n]范围内具有均匀分布。 (值n-m不能为负,并且必须适合Lua整数。)调用math.random(n)等效于math.random(1,n)。
此函数是C提供的基础伪随机生成器函数的接口。
答案 1 :(得分:1)
正如Nifim的答案正确指出的那样,有三种方法可以在Lua中调用math.random
。
不带参数的情况下,它将返回0.0到1.0范围内的实数。
带有一个或两个整数参数,它将返回一个整数。
这些都不是直接给您想要的,我认为是指定范围内的随机实数。
为此,您需要不带任何参数的情况下调用math.random
,然后调整结果。
例如,如果您想要一个介于5.0和10.0之间的随机数,则可以使用
math.random() * 5.0 + 5.0
考虑编写自己的包装函数,该函数需要两个浮点参数并调用math.random
。
function random_real(x, y)
return x + math.random() * (y-x)
end