随机数在Lua中重复

时间:2013-08-05 06:53:08

标签: lua

是Lua的新手,我正计划开发宾果游戏。 我创建了25个网格,我随机生成了数字。 但网格中的数字正在重复 我已经搜索过,但我找不到善意帮助我的朋友。

--enter code here
local widget = require "widget"
local storyboard = require( "storyboard" )
local scene = storyboard.newScene()
local xaxis = {40,80,120,160,200,40,80,120,160,200,40,80,120,160,200,40,80,120,160,200,40,80,120,160,200}
local yaxis = {40,40,40,40,40,80,80,80,80,80,120,120,120,120,120,160,160,160,160,160,200,200,200,200,200}
local img = {}
local i
local k
local u={}
    for i = 1, 25 do
        img[i] = display.newImageRect( "t.png", 39, 39 )
        img[i].x=xaxis[i]
        img[i].y=yaxis[i]
        math.randomseed( os.time() )
        j = math.random(1,75)
        u[i], u[j] = u[j], u[i]
        img[i] = display.newText(j,0,0,native.systemFont,20)
        img[i].x=xaxis[i]
        img[i].y=yaxis[i]  
    end

这些数字随机生成,但数字正在重复

1 个答案:

答案 0 :(得分:3)

这几乎是每种编程语言中常见的错误。当你使用随机循环时,你应该总是在循环之外分配时间种子。因为迭代非常快,并且每次重新分配当前时间,导致生成相同的随机数字。

所以你要做的就是把math.randomseed( os.time() )带出循环:

math.randomseed( os.time() )

for i = 1, 25 do
    img[i] = display.newImageRect( "t.png", 39, 39 )
    img[i].x=xaxis[i]
    img[i].y=yaxis[i]
    j = math.random(1,75)
    u[i], u[j] = u[j], u[i]
    img[i] = display.newText(j,0,0,native.systemFont,20)
    img[i].x=xaxis[i]
    img[i].y=yaxis[i]  
end

Proof