js 中奖几率计算!
来源:互联网 发布:淘宝洗纹身精油骗局 编辑:程序博客网 时间:2024/05/01 23:47
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:30},{name:'广告二',prob:18},{name:'广告三',prob:39},{name:'广告四',prob:60},{name:'广告五',prob:73},];//使用方法// $result = new getRand(obj);//测试数据,循环1000次取得每个数据出现的次数var record = [];for(var i = 0;i<1000;i++){var result = new getRand(obj);var index=false;for(var j in record){if(record[j].name==result['name']){index = j;break;}}if(index!==false){record[index].num+=1;}else{record.push({name:result['name'],num:1});}}console.log(record);
执行结果
0:{name: "广告五", num: 331}
1:{name: "广告四", num: 262}
2:{name: "广告三", num: 194}
3:{name: "广告一", num: 132}
4:{name: "广告二", num: 81}
1:{name: "广告四", num: 262}
2:{name: "广告三", num: 194}
3:{name: "广告一", num: 132}
4:{name: "广告二", num: 81}
参照网络php几率计算函数:
function get_rand($proArr) { $result = ''; //概率数组的总概率精度 $proSum = array_sum($proArr); //概率数组循环 foreach ($proArr as $key => $proCur) { $randNum = mt_rand(1, $proSum); //抽取随机数 if ($randNum <= $proCur) { $result = $key; //得出结果 break; } else { $proSum -= $proCur; } } unset ($proArr); return $result; }
阅读全文
0 0
- js 中奖几率计算!
- 彩票中奖几率计算公式
- 彩票中奖几率
- 中奖计算
- 中奖计算
- 中奖概率计算
- 蓝桥杯 中奖计算
- 第二届蓝桥杯 中奖计算
- 【第二届蓝桥杯】中奖计算
- js抽奖几率随机数思路!
- 几率
- 2011蓝桥杯【初赛试题】中奖计算
- Matlab计算福利彩票的中奖概率
- 使用JS写一个随机中奖练习
- 计蒜客计算之道程序设计大赛中奖记
- Java根据奖品权重计算中奖概率实现抽奖
- 蓝桥杯 2011年第二届C语言初赛试题(2) 中奖计算
- JS 计算
- @ResponseBody针对Json中Date的处理
- Android中手势识别检测器GestureDetector
- cherry-pick 主线commit 并修改commit log
- python---urllib2使用
- HTML5代码规范
- js 中奖几率计算!
- 用selectKey获取id值为负数
- 请实现这两个变量数值的交换(比如int a = 10,int b = 20变成int a = 20,int b = 10),要求写3种或3种以上的实现方式
- java 对月份的加减方法
- 恒德可视化指挥调度解决方案
- jsp中的指令标识
- Servle的线程安全问题
- 简易printf打印实现,占用内存非常小------<嵌入式开发自学笔记>
- IDEA 反撤销(还原)快捷键及新版IDEA使用教程