当前位置: 首页 > news >正文

Lua实战之洗牌算法

Description

打乱指定table中的元素!

Implemention

-- 设置随机数种子
math.randomseed(tonumber(tostring(os.time()):reverse():sub(1,6)))

-- 洗牌算法
function shuffle(targetTbl)
    local tblLen = #targetTbl
    while(tblLen > 0)
    do
        local idx = math.random(tblLen)
        targetTbl[tblLen], targetTbl[idx] = targetTbl[idx], targetTbl[tblLen]
        tblLen = tblLen - 1
    end
    return targetTbl
end

-- test
local testTbl = {1, 2, 3, 4, 5, 6, 7, 8, 9}
local retTbl = shuffle(testTbl)
for k, v in pairs(retTbl) do
    print(k, v)    
end

--[[ 
1	4
2	6
3	2
4	1
5	9
6	8
7	5
8	3
9	7 
]]

ps:

Lua代码在线测试网站:Execute Lua Online

相关文章:

  • Lua中loadstring的使用
  • 玩转“网上邻居”之浏览服务原理(一)
  • 玩转“网上邻居”之浏览服务原理(二)
  • cocos2d-lua:控件长按处理
  • 《网络工程师必读——网络系统设计》上市了
  • cocos2d-lua:控件翻转
  • 简单锁机脚本
  • cocos2d-lua:PageView的使用
  • 游戏机迎来新“三国时代”
  • Lua中字典型table的增删操作
  • Lua实战之整体移动table中的元素
  • IT人如何生存
  • cocos2d-lua:获取子节点
  • cocos2d-lua:剪裁头像
  • Symbian中操作ini文件
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • eclipse(luna)创建web工程
  • E-HPC支持多队列管理和自动伸缩
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Objective-C 中关联引用的概念
  • PAT A1017 优先队列
  • react 代码优化(一) ——事件处理
  • RxJS: 简单入门
  • Vue学习第二天
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 离散点最小(凸)包围边界查找
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 协程
  • 因为阿里,他们成了“杭漂”
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • #{} 和 ${}区别
  • #if 1...#endif
  • #QT(一种朴素的计算器实现方法)
  • (12)目标检测_SSD基于pytorch搭建代码
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (笔试题)分解质因式
  • (二)JAVA使用POI操作excel
  • (过滤器)Filter和(监听器)listener
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)Oracle存储过程编写经验和优化措施
  • ***测试-HTTP方法
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .net 8 发布了,试下微软最近强推的MAUI
  • .net core 连接数据库,通过数据库生成Modell
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .Net 路由处理厉害了
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET/C# 获取一个正在运行的进程的命令行参数