利用JavaScript实现抽奖概率算法研究

admin 2022年4月25日02:13:44安全开发评论78 views1104字阅读3分40秒阅读模式



网安引领时代,弥天点亮未来   






 

利用JavaScript实现抽奖概率算法研究

0x00故事是这样的


1.在B站闲逛无意间看见这种新闻,简单概括就是人家搭建了菠菜网站,并且后台可以调整中奖概率,一看就是割韭菜割多了,被人举报。

利用JavaScript实现抽奖概率算法研究


2.觉得很有意思,于是自己用JavaScript模拟了中奖概率的代码。


3.概率问题说白了就是占比越高,随机到的几率越大,例如下面的代码。

利用JavaScript实现抽奖概率算法研究

4.生成长度为100的数组,40个字符是ok,60个字符是no,然后根据数组长度生成随机索引取数组内的字符,这样有40%的几率随机到ok,有60%的几率随机到no。


5.如何通过输入的概率,自动计算出数组长度和需要的字符ok个数呢?例如下面的代码。


6.如果字符ok随机到的概率是50%,通过代码计算可以得到数组长度为10,数组内需要有5个ok字符。

利用JavaScript实现抽奖概率算法研究


7.如果字符ok随机到的概率是0.1%,通过代码计算可以得到数组长度为1000,数组内需要有1个ok字符。

利用JavaScript实现抽奖概率算法研究


8.如何实现的呢,下面可以简单概括一下计算方法。


9.比如0.1%的几率,除以100是0.001,但是字符个数只能是整数,不可能是0.001个。

利用JavaScript实现抽奖概率算法研究


10.然后再取小数点后面的字符,长度一共是3位。

利用JavaScript实现抽奖概率算法研究


11.换句话说,我们需要生成一个10*10*10=1000长度的数组,需要0.001*10*10*10=1个ok字符串,最后通过随机才能实现0.1%的效果。

利用JavaScript实现抽奖概率算法研究


12.最终把两段代码进行合并,实现的效果如下。


13.ok字符50%的概率,数组长度10,存在5个ok字符串。

利用JavaScript实现抽奖概率算法研究


14.ok字符0.1%的概率,数组长度1000,存在1个ok字符串。

利用JavaScript实现抽奖概率算法研究


15.ok字符0.01%的概率,数组长度10000,存在1个ok字符串。

利用JavaScript实现抽奖概率算法研究


16.ok字符3.5%的概率,数组长度1000,存在35个ok字符串。

利用JavaScript实现抽奖概率算法研究

17.文章内容仅供参考学习和研究用,如果师傅有更有意思的思路,也可以一起分享。


18.下面是文章案例所有的代码。

//by:奥村燐var a=1/100var b=a.toString().split(".")if(b.length>1){    var c=1    for (var d=0;d<b[1].length;d++){        c=c*10    }    e=a*c    f=c    var probability=[]    for(var i=0;i<f;i++){        if(i<e){            probability[i]="ok"        }else{            probability[i]="no"        }    }    console.log(probability)}


19.欢迎大家关注弥天实验室公众号。




利用JavaScript实现抽奖概率算法研究 

知识分享完了

喜欢别忘了关注我们哦~



学海浩茫,

予以风动,
必降弥天之润!


   弥  天

安全实验室

利用JavaScript实现抽奖概率算法研究




原文始发于微信公众号(弥天安全实验室):利用JavaScript实现抽奖概率算法研究

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月25日02:13:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  利用JavaScript实现抽奖概率算法研究 http://cn-sec.com/archives/938011.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: