资讯专栏INFORMATION COLUMN

JavaScript按概率随机生成事件

canger / 487人阅读

摘要:在抽奖的活动中经常会用到这个算法,不同奖项的获取概率不同,要按概率去随机生成对应的奖品统计概率总和生成概率随机数

/*
*在抽奖的活动中经常会用到这个算法,不同奖项的获取概率不同,要按概率去随机生成对应的奖品
*
*/
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.random 来生成随机数在日常操作中是普遍并且是简单的。如下: let rnd = Math.random() * 10; 上述代码的作用是生成 0~10 的随机数。 那么,这些随机数是出现的概率是均衡的吗?笔者没办法直接回答这个问题。因为生成的随机数...

    hidogs 评论0 收藏0
  • 关于JavaScript中的随机数方法

    摘要:另外,这几篇几个不错的随机生成随机数采用对获取的浮点数进行取整操作,也是同样的问题,能取到左端点,却无法取到右端点。 最近在琢磨内置对象Math的时候,参考了很多网上资料,不过我在Google中搜索js 随机整数,出来很多博客文章,很遗憾,在我看来排名靠前的这些文章都是错误的。接下来我将会论证我这一观点,同时把我所理解的Math.random()方法跟你分享。showImg(https...

    liuyix 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<