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
相关文章推荐
- 前端面试题:高效地随机选取数组中的元素
- 从包含N个元素的数组里,随机选取M个元素.
- 随机生成一个 10 个元素的数组,找到 x 的倍数,并将其值修改成 0.(注意:修改数值使用回掉函数处理)
- n个元素里选取m个,求m < n时的排列(不是全排列!!!)的递归算法代码
- 高效地随机选取数组中的元素
- 写一个函数,随机地从大小为n的数组中选取m个整数。要求每个元素被选中的概率相等。
- 前端面试题:高效地随机选取数组中的元素
- Sql&nbsp;Server中怎么随机选取指定行数…
- (6)LUA程序设计-编译执行与错误(compile 、run & error)处理
- 前端面试题:高效地随机选取数组中的元素
- [微软面试题] 一次遍历随机选取n个元素
- UVa 156 Ananagrams (用STL multimap&set处理字典中的重复元素)
- 随机图 & 如何处理Power-law(幂律)分布的数据
- nginx 11个处理阶段 && nginx lua 8个处理阶段
- 【甘道夫】HBase随机宕机事件处理 & JVM GC回顾
- 随机选取指定比例元素初探
- 随机选取一个长度为N的链表(N很大)里的K个元素 - 编程珠玑
- 面试题:求数组元素的交集、从数组中随机选取元素、分解质因数、一左一右顺序排列数组
- iterater&nbsp;删除元素的处理方法
- 随机选取一个长度为N的链表(N很大)里的K个元素