发布网友 发布时间:2022-04-23 03:48
共3个回答
懂视网 时间:2022-04-23 08:09
这次给大家带来按概率生成数字,按概率生成数字的注意事项有哪些,下面就是实战案例,一起来看一下。
js按照配置的概率生成,概率规则如下:
1------------50%
2------------30%
3------------15%
5------------5%
简单的代码
function myRandom() { var rand = Math.random(); if (rand < .5) return 1; if (rand < .8) return 2; if (rand < .95) return 3; return 5; }
复杂点的
function prizeRand(oArr) { var sum = 0; // 总和 var rand = 0; // 每次循环产生的随机数 var result = 0; // 返回的对象的key console.log(oArr); // 计算总和 for (var i in oArr) { sum += oArr[i][0]; } // 思路就是如果设置的数落在随机数内,则返回,否则减去本次的数 for (var i in oArr) { rand = Math.floor(Math.random()*sum + 1); if (oArr[i][0] >= rand) { result = oArr[i][0]; break; } else { sum -= oArr[i][0]; } } return result; } var oArr = {'5':[5, 'Mac'], '3':[15, 'iPhone'], '2':[30, 'iPad'], '1':[50, 'iWatch']}; console.log(prizeRand(oArr));
相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!
推荐阅读:
热心网友 时间:2022-04-23 05:17
貌似没有直接的方法,有个比较笨的方法,就是先确定你要取的值的范围的概率,再去取值。比如说(0,90)0.1,(91,100)0.9,那你就先去取1-10的随机数,如果是1,那么再生成(0,90)的随机数,如果是2-10,那么你就再生成(91,100)的随机数。虽然比较烦,但还是能控制的。热心网友 时间:2022-04-23 06:35
这个问题很复杂。。。。。。。。。。。。一般都是先生成随即(0,1)的数字。然后生成数字。如果大于0.小于0.2输出第一个数字。如果0.2到0.6就是第二个数字。0.6到1就是最后一个数字。