redis lua脚本学习笔记math.random()获取随机数
来源:互联网 发布:青云志网络总播放量 编辑:程序博客网 时间:2024/06/08 11:56
原文:redis lua脚本学习笔记math.random()获取随机数
源代码下载地址:http://www.zuidaima.com/share/1881598276013056.htm
最近在公司研究lua在redis中的使用,其中有个算法要使用到随机数,但运行lua的math.random()后一直返回同一个数字,万能的stackoverflow也没能得到答案,最后通过一个很magic的方式实现的。
代码如下:
function rnd(max) --lua的第1次random数不靠谱,取第3次的靠谱 local ret=0 math.randomseed(os.time()) for i=1,3 do n = math.random(max) ret=n end return retendprint(rnd(10))
每次运行的结果都不同
10
9
8
基本能满足需求了,虽然会稍微损耗些cpu。
另外的解决思路是通过client端生成随机数来调用,比如java的Random类。
另附上lua的math函数库
函数名描述示例结果pi圆周率math.pi3.1415926535898abs取绝对值math.abs(-2012)2012ceil向上取整math.ceil(9.1)10floor向下取整math.floor(9.9)9max取参数最大值math.max(2,4,6,8)8min取参数最小值math.min(2,4,6,8)2pow计算x的y次幂math.pow(2,16)65536sqrt开平方math.sqrt(65536)256mod取模math.mod(65535,2)1modf取整数和小数部分math.modf(20.12)20 0.12randomseed设随机数种子math.randomseed(os.time()) random取随机数math.random(5,90)5~90rad角度转弧度math.rad(180)3.1415926535898deg弧度转角度math.deg(math.pi)180expe的x次方math.exp(4)54.598150033144log计算x的自然对数math.log(54.598150033144)4log10计算10为底,x的对数math.log10(1000)3frexp将参数拆成x * (2 ^ y)的形式math.frexp(160)0.625 8ldexp计算x * (2 ^ y)math.ldexp(0.625,8)160sin正弦math.sin(math.rad(30))0.5cos余弦math.cos(math.rad(60))0.5tan正切math.tan(math.rad(45))1asin反正弦math.deg(math.asin(0.5))30acos反余弦math.deg(math.acos(0.5))60atan反正切math.deg(math.atan(1))45 0 0
- redis lua脚本学习笔记math.random()获取随机数
- 【Math】Random获取随机数
- JS获取随机数 Math.random()
- javascript通过math.random获取随机数
- java 学习笔记 随机数产生的两种办法Math.random()和Random类
- JAVA学习笔记:随机数(Math类和Random类生成的随机数)
- Redis系列学习笔记13 Lua 脚本
- 理解Math.random()随机数
- 随机数生成Math.random()
- java-随机数Math.random()
- 随机数Math.random()
- Math.random() 随机数
- Redis学习笔记(八)redis之lua脚本学习
- Redis学习-LUA脚本
- Java中Math.random()获取随机数的用法
- java-Math类Random方法获取随机数案例
- lua学习笔记--random function
- javaMath类随机数math.random()
- node编写服务器与传统服务器Apache、IIS区别
- Gson入门篇——常用用法
- Jsoup解析html某片段的问题
- 909422229________Web分页技术
- 苏嵌29 16.12.09
- redis lua脚本学习笔记math.random()获取随机数
- java io总结
- linux版本的 eclipse如何查看ADT版本,安装、卸载、更新eclipse中的ADT
- 架构设计:系统存储(8)——MySQL数据库性能优化(4)
- AD与DA术语解释
- 注册登录页面 (Java+MySQL)
- 计算机学习层次划分第二阶段技能:面向团队:协同开发:合作【人协】属性
- 堆排序(模版)
- Maven手动添加JAR 包到本地仓库