lua洗牌和发红包算法
来源:互联网 发布:网站域名备案怎么弄 编辑:程序博客网 时间:2024/04/30 03:32
--Fisher-Yates Shuffle--洗牌算法,用于将一组数据等概率随机打乱。等概率算法。local function shuffle(t) if not t then return end local cnt = #t for i=1,cnt do local j = math.random(i,cnt) t[i],t[j] = t[j],t[i] endend--分红包算法local function split(m,n) --构造m-1个可用的分割标记位 local mark = {} for i=1,m-1 do mark[i] = i end --打乱标所有记位 shuffle(mark) --构建一个新的表,并从mark表中取前n-1个位置作为有效标记位 local validMark = {} for i=1,n-1 do validMark[i] = mark[i] end --重新按从小到大排序有效标记 table.sort(validMark,function (a,b) return a<b end) --设置有效标记表的头、尾分别为0和m validMark[0] = 0 validMark[n] = m --构建输出数组 local out = {} for i=1,n do out[i] = validMark[i] - validMark[i-1] end return outendlocal function main() --设置随机数种子 math.randomseed(tostring(os.time()):reverse():sub(1,6)) local M = 10000 local N = 100 local data = split(M,N) -- 输出结果,并验算一下红包总钱数 local datasum = 0 local outstr = "" for i=1,N do datasum = data[i] + datasum outstr = outstr .. data[i] .. ((0 == i%10) and "\n" or "\t") end print ("datasum = " .. datasum) print (outstr)endmain()
1 0
- lua洗牌和发红包算法
- 简单发红包算法。
- 发红包算法简单实现
- 微信发红包算法
- lua-洗牌算法
- 自己写的发红包的算法
- 随机发红包算法(java)
- 洗牌和发牌算法
- 算法小游戏---支付宝之趣味发红包
- 用C语言实现发红包的软件算法
- 微信商户发红包和获取用户信息
- 发红包android
- AOJ-722 发红包
- 发红包案例
- 发红包系统
- php随机发红包
- php 实线发红包
- 夹克爷发红包
- Linux下修改MySQL用户(root)密码
- 压力测试及防止恶意压力测试的方法(nginx和apache)
- 教育教学直播的3种主流模式
- log4j入门教程
- mmc的命令里面write的参数是16进制却不需要写0x
- lua洗牌和发红包算法
- ()运算符重载
- Chapter 6 装饰者模式
- Storm介绍及与Spark Streaming对比
- python基础知识之字典的建立、简单操作、格式化字符串
- //JQ操作文本域和下拉选项的值
- HTTP协议详解
- javax.el.PropertyNotFoundException: Property 'xxx' not found on type com.xxx.xxx
- Html5学习笔记