代码库
  • 首页
  • html模板
  • Jquery插件
  • 代码文章
  • 百宝箱
  • 网站导航
  • 编程代码
    • PHP
    • Jquery
    • DivCss
    • Mysql
    • linux
  • 程序代码
    • 织梦Cms
  • php
  • jquery
  • divcss
  • 网站建设500起 APP小程序独开
  • HTML模板全站下载388元
  • COMODO通配符SSL证书330元
  • 广告位招租:515856299
  • 广告位招租:515856299
  • 广告位招租:515856299
  • 广告位招租:515856299
  • 广告位招租:515856299
  • 广告位招租:515856299
  • 广告位招租:515856299
  • 广告位招租:515856299
  • 广告位招租:515856299
  • 广告位招租:515856299
  • 广告位招租:515856299
  • 广告位招租:515856299
  • 广告位招租:515856299
  • 领取上云大礼包单笔最高立减1500元
  • 服务器0元试用,首购低至0.9元/月起

js抽奖概率算法

分类:Jquery人气:4828
直接通过数组中prob值来控制概率,值越大概率越高,值越小,概率越低
<script>
	
function getRand(obj) {
    this.obj = obj;
    return this.init();
}

//获取几率总和
getRand.prototype.sum = function(key) {
    var self = this;
    var obj = this.obj;
    var sum = 0;
    for (var i in obj) {
        sum += obj[i][key];
    }
    return sum;
};

//取得结果
getRand.prototype.init = function() {
    var result = null;
    var self = this;
    var obj = this.obj;
    var sum = this.sum('prob'); //几率总和
    for (var i in obj) {
        var rand = parseInt(Math.random() * sum);
        if (rand <= obj[i].prob) {
            result = obj[i];
            break;
        } else {
            sum -= obj[i].prob;
        }
    }
    return result;
};


//几率数组
var obj = [{
        name: '结果一',
        prob: 1
    },
    {
        name: '结果二',
        prob: 5
    },
    {
        name: '结果三',
        prob: 39
    },
    {
        name: '结果四',
        prob: 60
    },
    {
        name: '结果五',
        prob: 703
    },
];

//使用方法
// $result = new getRand(obj);

//测试数据,循环1000次取得每个数据出现的次数
var record = [];
for (var i = 0; i <= 100; i++) {
    var result = new getRand(obj);
    var index = false;
    for (var j in record) {
        if (record[j].name == result['name']) {
            index = j;
			document.write("第"+i+"次,"+record[j].name+"<br>");
            break;
        }
    }
    if (index !== false) {
        record[index].num += 1;
    } else {
        record.push({
            name: result['name'],
            num: 1
        });
    }
	
}

</script>
标签:抽奖算法
PREVIOUS:js替换指定字符
NEXT:JS手机触摸屏事件用法详解
  • Object.keys
  • redis
  • 插入
  • 字母
  • jqGrid
  • upload
  • 数据库缓
  • 保留两位
  • 获取
  • 判断图片
  • 函数
  • 父级元素
  • 微信
  • Echo.js
  • 拖动
  • 日期
  • JS复制功能
  • 数组去重
  • 数据选中
  • getTime
  • JS去空格
  • jQuery
  • 上传文件
  • 替换
  • uniapp
  • ajax
  • 关闭窗口
  • 循环遍历
  • excle
  • 选中效果
  • 跳转链接
  • 自动完成
  • 用户输入
  • startsWith
  • 数组
  • 抽奖
  • 触摸屏
  • 浏览器兼容
  • 屏幕闪烁
  • 顶部距离
  • 提交
  • 复制代码
  • 子级元素
  • 阻止表单
  • js
  • mobiscroll
  • 复制
  • 翻页
  • 七牛云
  • cookie
  • js跳转
  • 倒计时
  • 移动端
  • 定时器
  • class
  • 表格
最新模板
  • UED用户体验设计师网站模板

    这是一套UED用户体验设计师网站模板是一款紫色渐变大气UED用户体验设计师网站模板下载

  • 数字广告推广公司网站模板

    这是一套数字广告推广公司网站模板是一款推广企业响应式网站模板下载

  • 美食自媒体博客主页模板

    这是一套美食自媒体博客主页模板是一款美食爱好者个人博客网站模板下载

  • 84消毒液洁具企业网站模板

    这是一套84消毒液洁具企业网站模板是一款消毒清洁用品洁具企业网站模板下载

  • 婚礼营销策划公司网站模板

    这是一套婚礼营销策划公司网站模板是一款红色宽屏大气的婚礼策划网站模板下载

热门推荐
  • 1Object.keys方法实例详解
  • 2NodeJS延迟
  • 3uniapp 修改组件样式
  • 4uniapp中H5端PC宽屏适配
  • 5原生 ajax队列请求
  • 6获取窗口顶部距离
  • 7js点击移动端屏幕闪烁
  • 8mobiscroll.js 使用说明
  • 9js 七牛云上传图片
  • 10js 数组的去重与拷贝
  • 11js new Data(data).getTime()返回NaN
  • 12js 上传下载excle文件
  • 13js base64 七牛图片上传自定义路径
  • 14ajax请求之后的弹窗提示
  • 15js获取url中的参数
百宝箱
  • CSS压缩格式化

    CSS压缩

  • html格式化

    html格式化

  • 繁体字转换器

    繁体字转换

  • JSON检验

    JSON检验

  • MD5加密

    MD5加密

  • css3动画

    css3动画

© 2016-2021 代码库关于我们网站导航网站地图皖ICP备14004357号
代码库