Lua隨機選取表中元素&處理
阿新 • • 發佈:2019-01-27
mapmonsters{{ mapid = 150404, monsters = { {monsterId = 100402, weight = 147}, {monsterId = 100403, weight = 147}, {monsterId = 100404, weight = 147}, {monsterId = 100406, weight = 147}, {monsterId = 100405, weight = 147}, {monsterId = 100502, weight = 5}, {monsterId = 100503, weight = 5}, {monsterId = 100504, weight = 5}, } }, } math.randomseed(tostring(os.time()):reverse():sub(1, 6)) -- 隨機種子 function offline_random_monster(x) totalWeight = 0 tempRate = {} bingo = 0 -- 處理權重 for i=1, table.getn(mapmonsters) do if mapmonsters[i].mapid == x then -- 找到了地圖 bingo = i; for j = 1, table.getn(mapmonsters[i].monsters) do totalWeight = totalWeight + mapmonsters[i].monsters[j].weight table.insert(tempRate, totalWeight) end end end keynum = math.random(totalWeight) -- 儲存找到的地圖索引 for k=1, table.getn(tempRate)-1 do if keynum <= tempRate[k] then return mapmonsters[bingo].monsters[k].monsterId elseif keynum > tempRate[k] and keynum <= tempRate[k+1] then return mapmonsters[bingo].monsters[k+1].monsterId end end end