2013-08-13 21 views
13

Quindi sto cercando di creare qualcosa e ho cercato dappertutto cercando modi per generare un numero casuale. Tuttavia, non importa dove collaudo il mio codice, risulta in un numero non casuale. Ecco un esempio che ho scritto.Lua math.random non funziona

local lowdrops = {"Wooden Sword","Wooden Bow","Ion Thruster Machine Gun Blaster"} 
local meddrops = {} 
local highdrops = {} 

function randomLoot(lootCategory) 
    if lootCategory == low then 
     print(lowdrops[math.random(3)]) 
    end 
    if lootCategory == medium then 

    end 
    if lootCategory == high then 

    end 
end 

randomLoot(low) 

Ovunque proverò il mio codice ottengo lo stesso risultato. Per esempio quando provo il codice qui http://www.lua.org/cgi-bin/demo finisce sempre con "Ion Thruster Machine Gun Blaster" e non viene randomizzato. Per questo motivo semplicemente testare

random = math.random (10) 
print(random) 

mi dà 9, c'è qualcosa che mi manca?

risposta

23

è necessario eseguire math.randomseed() una volta prima di utilizzare math.random(), in questo modo:

math.randomseed(os.time()) 

Un possibile problema è che il primo numero non può essere così "randomizzato" in alcune piattaforme. Quindi, una soluzione migliore è quella di pop alcuni numeri casuali prima di utilizzarli per reale:

math.randomseed(os.time()) 
math.random(); math.random(); math.random() 

Riferimento: Lua Math Library

+0

esecuzione di una versione aggiornata del mio codice con quella linea sembra fare il trucco su questo codice lua demo qui http://www.lua.org/cgi-bin/demo tuttavia, eseguire lo stesso codice sul mio ide di lua eclipse mi dà lo stesso problema originale che stavo avendo, non sembra essere casuale, potrebbe essere un problema con il mio IDE? – user2677006

+1

@ user2677006 Prova a chiamare 'math.random()' una volta a destra dopo 'math.randomseed()', controlla se è corretto. –

+0

Questo sembrava risolvere il problema, come non lo so per certo, ma grazie mille. – user2677006