17

だから私はちょっとしたものを作ろうとしていて、乱数を生成する方法を探していたるところを見てきました。ただし、コードをどこでテストしても、結果は乱数ではありません。ここに私が書いた例があります。

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)

コードをどこでテストしても、同じ結果が得られます。たとえば、http: //www.lua.org/cgi-bin/demo でコードをテストすると、常に「Ion Thruster Machine Gun Blaster」になり、ランダム化されません。さらに言えば、簡単にテストする

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

私に9を与えます、私が欠けているものはありますか?

4

1 に答える 1

28

math.randomseed()を使用する前にmath.random()、次のように 1 回実行する必要があります。

math.randomseed(os.time())

考えられる問題の 1 つは、一部のプラットフォームでは最初の数字が「ランダム化」されていない可能性があることです。したがって、より良い解決策は、実際に使用する前に乱数をポップすることです。

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

参考:Lua Math Library

于 2013-08-13T02:54:10.883 に答える