• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > 关于lua产生随机数的问题

关于lua产生随机数的问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了lua 随机数,lua随机数种子,lua生成随机数,lua 取随机数,lua产生随机数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:关于lua产生随机数的问题
描述:

lua产生随机数

   math.randomseed(os.time())
   rand = math.random();

实际上我是遇到的是高并发web应用的情况下,比如秒杀场景,大家的时间都可能是相同的,随之带来的产生的随机数都是相同的,或者是接近的。

我在想是否可以利用Header里来做随机数的种子,比如IP之类,这样考虑是否合理?

感觉Lua处理随机数很蛋疼....


解决方案1:

lua的随机数生成算法是直接用的C运行时的rand函数,既线性同余法,优点是运算速度快,缺点是随机性有限制。
如果你需要更精确的的随机数算法可以考虑使用梅森旋转算法(http://en.m.wikipedia.org/wiki/Mersenne_twister),这里有一个lua实现(lrandom):http://webserver2.tecgraf.puc-rio.br/~lhf/ftp/lua/

解决方案2:

math.randomseed( tonumber(tostring(os.time()):reverse():sub(1,6)) ) 仅供参考。。。

解决方案3:

楼主随机数用法有点问题。设置随机数的seed表示初始的随机性,在楼主描述的场景下,math.randomseed(os.time())只用调用一次,例如在lua虚拟机启动时候调用一下,之后的每个请求只用rand = math.random();即可,默认生成0~1之间的浮点数。

解决方案4:

所以别用os.time()当seed,给lua包装一个能获取毫秒/微秒的函数就好了。觉得逼格不够的话还可以从/dev/random或者/dev/urandom里面倒腾数据出来当seed。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 关于lua产生随机数的问题
  • 如何获得Lua表中的entry数?

相关文章

  • 2017-06-05 高通8916boot哪里查看分区信息?
  • 2017-06-05 求助,VxWorks硬盘启动,ERROR
  • 2017-06-05 与注册表有关的问题
  • 2017-06-05 请问状态机在通讯中到底起到了什么重要作用?
  • 2017-06-05 MTKfeaturephone怎么得到附近wifi的ssid,mac,信号强度?
  • 2017-06-05 请问哪里可以找到虚拟光驱或者虚拟内存盘的驱动源代码?
  • 2017-06-05 嵌入式开发,S3C2410的核心板,开发板请进
  • 2017-06-05 STM32驱动NANDFLASH某些位出错
  • 2017-06-05 ARM裸机程序求助,编译通过,运行不正常
  • 2017-06-05 小妹我是大二的学生,刚学汇编,请大哥哥们帮忙!

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • iarcc2530协议栈的问题
    • Rxtx支持485吗?
    • VS2008开发了一个ADO的访问SQLSERVERCE的程序,用的是CVOConnection和CVORecordset类我修改过在WinCE35
    • 高分求word2000生成doc的详细文件结构
    • vs2003与DDK环境配置
    • 嵌入式系统设计示例:车载GPS终端系统的设计
    • 那位老大能解释一下sources里的各个语句的意义?
    • PCI2050+XR17D158多路串口板串口调试助手发送数据失败
    • 如何把Windows下的exe直接放到wince下运行,需要哪些附加文件
    • 自己写的驱动,感觉probe函数应该要有打印信息的,没有打印是个什么鬼?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有