关于lua产生随机数的问题

lua产生随机数

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

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

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

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

阅读 21.1k
4 个回答

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏