美文网首页
lua从随机数开始

lua从随机数开始

作者: 符文剑舞 | 来源:发表于2018-10-31 19:55 被阅读0次

    随机数的应用频率很高,很多地方都有可能会有到随机数,比如某商业广场促销活动里的抽奖...或者说那种飞行棋里随机行走的点数

    我来和你一起在这里通过随机数这么一个东西展开一场思考...

    我个人觉得用任何一种编程语言来描述这个问题都是一样的结果,所以在这里为了容易看明白,我这边使用lua脚本来实现。

    以下是lua脚本

    lua 脚本截图

    话说生活如果真的如此美好,我觉得你可能不会这么珍惜这么美好的生活...因为,这里需要一个特别有意思的判断,就是如果 ends 比 begin小的话...

    你坎坷的人生已经迈出了第一步...会...如下图一样

    控制台报错信息截图

    好可怕的报错 都引申到了C(语言)层面上

    所以,我决定去看一下这个底层源代码的实现

    lua 5.3.5 对应c语言代码截图

    在一次参数检测的时候发现了问题,间隔不存在,还有一个没触发过的bug 间隔过大也不行。

    所以改良一下这个方法

    maxValue属于恶搞的,建议用LUA_MAXINTEGER这个值

    需要说明的是 这个errorValue 可不是随随便便可以写的,建议各位写逻辑的老铁根据需求或者设计师的设计来具体设定,总之不是可以随便玩儿的。

    理智一点的做法是如果得到了这个错误值 提示系统错误。

    更加完美一点的做法是限定输入的值,确保begin 一定小于或者等于 ends

    测试刚才写的方法(以下是测试代码)

    lua 测试脚本截图

    看了一下控制台的输出,似乎没什么问题. 然而,灾难发生在你再一次执行这个程序...两次随机的居然是完全一样的...这样子的随机数可不是我们所预期的吧?

    再度改良一下做法

    lua 测试脚本截图

    反复输出了几次,每次都不一样。看起来,这就是我们所期待的

    然而并非如此...你的美好人生并没有因此而展开相反的是这仅仅只是与bug斗争的开始...

    某些游戏的论坛或者交流论坛里会提到一些随机性的东西有周期现象... 什么叫周期现象那就是说我平时的概率是多少,每个月的那几天比如每月15的那天下午3点 概率居然是一致的

    (时间 周期 均为随机杜撰)然后,抱着不服气的态度,我亲自写了一个测试例子去确认这个问题,事实证明没有...但是这并非代表真的没问题 因为 这种随机仅仅只是理论上的随机

    而并非真正意义上的随机,事后我做了一项优化 替换随机种子 os.time() 可以选择性的做了一些加减 和 变动...

    我不能确定一定没有bug,但我知道它肯定在某个地方没有爆发出来。

    生活并不尽如人意,但我依然热爱生活。

    代码并非尽善尽美,但我依然与bug抗争。

    相关文章

      网友评论

          本文标题:lua从随机数开始

          本文链接:https://www.haomeiwen.com/subject/sghztqtx.html