logo
0
0
Login

ArSrNa False Random 适用抽卡的伪随机算法

原理

使用JavaScript中 Math.random()方法,无加权地生成任意随机数,当且仅当这个数小于等于给定概率[0,1]时,执行下一步回调

1672416809580

if(Math.random()<=0.5) callback() //加权概率为0.5

示例:生成100个概率为0.5与一个概率为0.3的随机变量,并求出频率 1672416682046

function num(){ var sA=0,sB=0;  for(var i=0;i<100;i++){     var rds=Math.random().toFixed(2);     switch(true){         case rds<=0.5:             sA++         break;         case rds<=0.3:             sB++         break;     }   } return(`A:${sA/100} B:${sB/100}`) }

结果如下 1672416793774

Usage

浏览器

引入本模块

<script src="index.js></script>

nodejs

直接复制全文粘贴至业务代码上

方法

specific(exp,name,times,bdArgs)

其中

参数名称类型备注
exp概率float取值 [0,1]
name友好名称string当前概率回调后返回的名称,示例:test:20
times次数Integer生成随机数的次数
bdArgs保底参数Json['times']:多少次必出,格式为 {times:次数}

预期效果

内置方法DEMO

以崩坏3 2022-10-27 卡池为例

1672464214504

demo.jstest() 方法解释如下

function test(){ var rname=['薪炎之律者角色卡','午夜苦艾角色卡','白夜执事角色卡','黯蔷薇角色卡','蓝莓特攻角色卡','午夜苦艾碎片','白夜执事碎片','黯蔷薇碎片','蓝莓特攻碎片','高级技能材料','相转移镜面','装甲残晶'], exp=[1.50,4.50,3.00,3.00,3.00,15.00,3.33,3.33,3.33,1.50,6.00,36.50], bd=[100,10,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] res=[]; for(var i=0;i<exp.length;i++){ res.push(specific(exp[i],rname[i],10000,{times:bd[i]})) } console.log(res); }

上述代码中

变量参数解释示例参数
rname各项返回友好名称['薪炎之律者角色卡','午夜苦艾角色卡','白夜执事角色卡','黯蔷薇角色卡','蓝莓特攻角色卡','午夜苦艾碎片','白夜执事碎片','黯蔷薇碎片','蓝莓特攻碎片','高级技能材料','相转移镜面','装甲残晶']
exp各项概率[1.50,4.50,3.00,3.00,3.00,15.00,3.33,3.33,3.33,1.50,6.00,36.50]
bd各项保底次数(几次必出1次)[100,10,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
res缓存数组[]

通过for遍历整个数组,一项项试验返回结果,再把结果压入缓存,最后输出

字段类型解释
namestring友好名称
timesInteger出现次数
probablefloat出现频率

预期结果

[ { name: '薪炎之律者角色卡', times: 126, probable: 0.0126 }, { name: '午夜苦艾角色卡', times: 451, probable: 0.0451 }, { name: '白夜执事角色卡', times: 280, probable: 0.028 }, { name: '黯蔷薇角色卡', times: 298, probable: 0.0298 }, { name: '蓝莓特攻角色卡', times: 320, probable: 0.032 }, { name: '午夜苦艾碎片', times: 1511, probable: 0.1511 }, { name: '白夜执事碎片', times: 331, probable: 0.0331 }, { name: '黯蔷薇碎片', times: 315, probable: 0.0315 }, { name: '蓝莓特攻碎片', times: 350, probable: 0.035 }, { name: '高级技能材料', times: 167, probable: 0.0167 }, { name: '相转移镜面', times: 587, probable: 0.0587 }, { name: '装甲残晶', times: 3597, probable: 0.3597 } ]

与预期数据比较

1672465436372

数据基本拟合


Powered by Ar-Sr-Na www.arsrna.cn

About

No description, topics, or website provided.
Language
Markdown63.9%
JavaScript36.1%