详解JavaScript按概率随机生成事件


Posted in Javascript onAugust 02, 2017

最近做了一个JavaScript按概率随机生成事件,于是整理了一下思路,写了一个小demo:

/*
*在抽奖的活动中经常会用到这个算法,不同奖项的获取概率不同,要按概率去随机生成对应的奖品
*
*/
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));

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS重要知识点小结
Nov 06 Javascript
javascript对下拉列表框(select)的操作实例讲解
Nov 29 Javascript
JavaScript使用cookie实现记住账号密码功能
Apr 27 Javascript
图解JavaScript中的this关键字
May 28 Javascript
详解VueJs前后端分离跨域问题
May 24 Javascript
详解Angular 开发环境搭建
Jun 22 Javascript
基于vue组件实现猜数字游戏
May 28 Javascript
Vue.js 事件修饰符的使用教程
Nov 01 Javascript
快速了解Node中的Stream流是什么
Feb 13 Javascript
vue-router 起步步骤详解
Mar 26 Javascript
JavaScript中的 new 命令
May 22 Javascript
通过实例了解Render Props回调地狱解决方案
Nov 04 Javascript
angular中的cookie读写方法
Aug 02 #Javascript
webpack进阶——缓存与独立打包的用法
Aug 02 #Javascript
使用vue构建移动应用实战代码
Aug 02 #Javascript
React Native之ListView实现九宫格效果的示例
Aug 02 #Javascript
jQuery初级教程之网站品牌列表效果
Aug 02 #jQuery
ReactNative列表ListView的用法
Aug 02 #Javascript
ReactNative页面跳转Navigator实现的示例代码
Aug 02 #Javascript
You might like
PHP中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
PHP获取类中常量,属性,及方法列表的方法
2009/04/09 PHP
php获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
简单了解WordPress开发中update_option()函数的用法
2016/01/11 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
php5与php7的区别点总结
2019/10/11 PHP
30个最佳jQuery Lightbox效果插件分享
2011/04/11 Javascript
解决js数据包含加号+通过ajax传到后台时出现连接错误
2013/08/01 Javascript
js加密解密字符串可自定义密码因子
2014/05/13 Javascript
基于jquery实现页面滚动到底自动加载数据的功能
2015/12/19 Javascript
解析Node.js基于模块和包的代码部署方式
2016/02/16 Javascript
angularjs ocLazyLoad分步加载js文件实例
2017/01/17 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
基于node.js依赖express解析post请求四种数据格式
2017/02/13 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
常用的 JS 排序算法 整理版
2018/04/05 Javascript
详解nodejs 配置文件处理方案
2019/01/02 NodeJs
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
python中zip和unzip数据的方法
2015/05/27 Python
python实现批量下载新浪博客的方法
2015/06/15 Python
python的unittest测试类代码实例
2017/12/07 Python
python将控制台输出保存至文件的方法
2019/01/07 Python
基于Python实现签到脚本过程解析
2019/10/25 Python
django中的数据库迁移的实现
2020/03/16 Python
python 获取剪切板内容的两种方法
2020/11/28 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
2021/01/09 Python
html5 viewport使用方法示例详解
2013/12/02 HTML / CSS
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
数据库专业英语
2012/11/30 面试题
《赠汪伦》教学反思
2014/04/12 职场文书
工商企业管理专业自荐信范文
2014/04/12 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书
SQL注入详解及防范方法
2021/12/06 MySQL