1

我是 Lua 新手,正计划开发 Bingo 游戏。我创建了 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

数字是随机生成的,但数字是重复的

4

1 回答 1

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

证明

于 2013-08-05T06:56:54.750 回答