New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
抽奖功能修改建议 #70
Comments
收到 |
随机数用Math.floor会有问题,我觉得用string来截取比较好 当然最好是random.org的api更好了 |
问题2我已经提交了pr(>д<) |
昨天的抽奖中: 55:41 抽中 damands#353 58:21 抽中 来自非洲的猴子#245、Graven`L#43 01:21:23 抽中 lics#509 、嘚忒#59 、来自非洲的猴子#245 、深巷少女和狗#296 、C137兵库北#646 、AC娘的表弟#345 01:24:22 抽中 这个扳手#291、司马相柳#327、小爷就爱笑#578、糟糕姬#188 01:26:04 抽中 lics#509、本娘天生36D#46 01:27:03 抽中 司马相柳#327 01:27:18 抽中 一根会思考的芦苇#539 01:28:11 抽中 damands#353 01:28:25 抽中 C137兵库北#646 353,245,509,327,646楼,都出现了连续抽中的情况,也引发了弹幕对抽奖机随机性的质疑,随机数生成方式应当需要修改。 |
先写入计划了,群主和我最近比较忙,有时间了慢慢迁移吧 |
最近有空摸鱼研究了一下建议一 在线随机数生成器参考AVUP用过的在线随机数生成器使用的random.js,采用了MersenneTwister伪随机数算法,随机数生成算法大致为
Math.random()根据V8的博客There’s 比较从代码上看助手的 测试代码
可以看到 验证可以看到1出现的次数明显多于0和2。 结论综上,助手抽奖使用的随机数算法可以认为是没有问题的,只需要增加一个排除已中奖用户的功能即可。 关于Math.floor()如果担心 |
|
谢谢铁汁的验证;我们当时加入抽奖功能的理想使用场景是文章区的抽奖,文章区的抽奖当时主要是Up主定一个时间来抽奖,抽奖的次数一般只有一次,所以当时没有考虑到vup们的多次且需要去重的抽奖,代码层面的实现并没有考虑到需要去除上次抽过的Acer;再次感谢铁汁对我们的建议和验证。 |
new Date() % Array.length
或window.crypto.getRandomValues
获取随机数The text was updated successfully, but these errors were encountered: