/**
* js数组实现权重概率分配
* @param Array arr js数组,参数类型[Object,Object,Object……]
* @return Array 返回一个随机元素,概率为其percent/所有percent之和,参数类型Object
* @author andyzhou
*/
function get_weight_random(arr){
//参数arr元素必须含有percent属性,参考如下所示
/*例如
var arr = [{
name : '1',
percent : 1
}, {
name : '2',
percent : 2
}, {
name : '3',
percent : 1
}, {
name : '4',
percent : 2
}
];
*/
var total = 0;
var i, j, percent;
//下标标记数组
var index = new Array();
for (i = 0; i < arr.length; i++) {
//判断元素的权重,为了实现小数权重,先将所有的值放大100倍
percent = 'undefined' != typeof(arr[i].percent) ? parseInt(arr[i].percent*100) : 0;
for (j = 0; j < percent; j++) {
index.push(i);
}
total += percent;
}
//随机数值
var rand = Math.floor(Math.random() * total);
return arr[index[rand]];
}