1

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

数字はランダムに生成されていますが、数字は繰り返されています

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 に答える