对“随机”的错误论证

时间:2019-12-26 21:00:21

标签: lua roblox

这是我的代码

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道歉

2 个答案:

答案 0 :(得分:2)

在Lua中,math.random可以称为3种方式:

  • 不带参数
  • 带有1个整数参数
  • 带有2个整数参数

它不接受-41.99415.471之类的值,这就是为什么您会收到错误消息。

如果您将值更改为-4115,就不会再看到错误。


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