起因是,写了一个某网络游戏的抽奖模拟器,也就是随机礼品箱。
起初想到不就随机嘛,好搞。然后发现不对……有概率,概率该怎么办,不可能单个定义吧,单个定义了那我要怎么roll它?从100中单个roll?这可不行,同样的roll有很多个,于是用到了【组】概念。
好在这个原型是分了档次,而且每个档次都有明确的概率。
好,到这里我要说一下自认为的随机与概率的概念:
随机:指的是在既定数量中随意抽取一个;
概率:指的是在既定数值(通常是100*)中roll区间数字,区间数字能匹配被设定概率的数字;
用代码来说话就是
随机:parseInt(Math.random()* .length ); //取整数(随机值 配比 对象数量)
概率:var RollList = 给ABC分组绑定概率
var A\B\C = 定义ABC分组区间值,最简单的就是+var
var roll = parseInt(Math.random()*100);
//这里基础是100%,小数点往后精确一位多一个0,例如:概率4.27%就*10000
给roll结果添加判定 if{ } leseif {}
在roll结果的判定里面再做一次随机:
var done = parseInt(Math.random()* .length );
这样就完成了概率的运算,实际上就是2次随机。
第一次roll,确定进入哪个组;
第二次roll,在进入的组中随机获得组里所有值中的一个;
嘛,当然也有更好的写法,这里只讨论逻辑,毕竟逻辑是通用的。
模拟器地址
防各种就隐藏一下
http://www.mabinogi.online/mabitool/egg/
点击方形盒子就能开抽,代码右键都能看到,自认为还是写的很规整的/_\
暂无关于此日志的评论。