Skip to content

Instantly share code, notes, and snippets.

@Partoo
Created February 7, 2013 01:52
Show Gist options
  • Select an option

  • Save Partoo/4727730 to your computer and use it in GitHub Desktop.

Select an option

Save Partoo/4727730 to your computer and use it in GitHub Desktop.
/*obj 概率对象数组;
luck 概率数组,即obj数组元素意义对应;
对于给定的概率对象,该函数运行相当于:
var a = ['一等奖:宝马X6', '二等奖:苹果三件套', '三等奖:威戈背包', '继续努力!'];
var b = [1, 10, 100, 500];
goodluck(a, b) {
var random = (1 + 10 + 100 + 500) * Math.random();
random <= 500 || return a[3];
random <= 600 || return a[2];
random <= 610 || return a[1];
random <= 611 || return a[0];
return null;
};
*/
function goodluck(obj, luck) {
var sum = 0,
factor = 0,
random = Math.random();
for(var i = luck.length - 1; i >= 0; i--) {
sum += luck[i]; // 统计概率总和
};
random *= sum; // 生成概率随机数
for(var i = luck.length - 1; i >= 0; i--) {
factor += luck[i];
if(random <= factor) return obj[i];
};
return null;
};
/* test
var a = ['一等奖:宝马X6', '二等奖:苹果三件套', '三等奖:威戈背包', '继续努力!'];
var b = [100, 100, 100, 100];
console.log(goodluck(a, b));
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment