您的位置:首页 > 编程语言 > Lua

Lua随机选取表中元素&处理

2014-04-04 15:49 274 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: