我正在使用Corona SDK和Lua作为编程语言进行游戏.从表中获取随机数时,我很困惑使用以下哪一项?
math.random()
math.randomseed()
Run Code Online (Sandbox Code Playgroud)
有人会详细说明它们之间的确切区别吗?所以我可以在我的情况下使用最好的一个.
小智 6
如果调用时需要相同的顺序math.random(),则必须math.randomseed(same number every time before calling)在调用前进行设置math.random()。
如果您想要不同的随机数序列,请math.randomseed(os.time())在调用之前传递,math.random()因为os.time()将返回以秒为单位的时间,因此每次都会不同。
请参考以下链接并在那里检查示例。
https://docs.coronalabs.com/api/library/math/randomseed.html
math.random给你随机数.您可能会在需要随机数的程序中多次调用它.
math.randomseed确定从哪里开始随机数序列math.random.您可能只需要在需要随机数的程序中调用一次.
math.randomseed在每次打电话之前,您需要打电话似乎是一种常见的误解math.random.这是错误的,将打败随机性math.random.
当您执行一个使用math.random而不设置的程序时math.randomseed,它通常会产生相同的随机数集。这是由于这样的事实,math.randomseed负责设置默认seed(或算法发电机)通过带出的随机数math.random。
这种一致性显然不是随机的。举个例子——先去Lua Demo网站,然后插入这段代码:
for i = 1,10 do
print(math.random())
end
Run Code Online (Sandbox Code Playgroud)
不断点击运行按钮,看看解释器如何每次产生相同的数字。但是,要更改生成随机数的“种子”,我们可以将“种子”设置为当前时间(因为当前时间永远不会重复)
这次去网站上多次执行这段代码:
math.randomseed(os.time())
for i = 1,10 do
print(math.random())
end
Run Code Online (Sandbox Code Playgroud)
您现在应该注意每次将如何获得不同的数字。