摘要:在抽奖的活动中经常会用到这个算法,不同奖项的获取概率不同,要按概率去随机生成对应的奖品统计概率总和生成概率随机数
</>复制代码
/*
*在抽奖的活动中经常会用到这个算法,不同奖项的获取概率不同,要按概率去随机生成对应的奖品
*
*/
function random(arr1, arr2) {
var sum = 0,
factor = 0,
random = Math.random();
for(var i = arr2.length - 1; i >= 0; i--) {
sum += arr2[i]; // 统计概率总和
};
random *= sum; // 生成概率随机数
for(var i = arr2.length - 1; i >= 0; i--) {
factor += arr2[i];
if(random <= factor)
return arr1[i];
};
return null;
};
// test
var a = ["mac", "iphone", "vivo", "OPPO"];
var b = [0.1, 0.2, 0.3, 0.4];
console.log(random(a, b));
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/84595.html
摘要:另外,这几篇几个不错的随机生成随机数采用对获取的浮点数进行取整操作,也是同样的问题,能取到左端点,却无法取到右端点。 最近在琢磨内置对象Math的时候,参考了很多网上资料,不过我在Google中搜索js 随机整数,出来很多博客文章,很遗憾,在我看来排名靠前的这些文章都是错误的。接下来我将会论证我这一观点,同时把我所理解的Math.random()方法跟你分享。showImg(https...
阅读 2953·2021-10-14 09:43
阅读 1854·2021-09-29 09:34
阅读 1838·2021-07-28 00:16
阅读 3040·2019-08-30 15:53
阅读 3010·2019-08-30 13:59
阅读 3070·2019-08-30 13:57
阅读 1194·2019-08-26 13:38
阅读 1986·2019-08-26 13:25