红包算法设计
js版(来源http://q.cnblogs.com/q/70893/)
var m = [], money = 100, num = 15, min = 2, max = 15; //每个人先把最小金额拿到手 for(var i = 0; i < 15; i++){ m.push(2); } money = money - ( num * min); while(money > 0){ //在0-14之间随机 var idx = Math.floor(Math.random() * max);//此处表示0-14 if(m[idx] < max){ m[idx] += 1; money -= 1; } } console.log(m);
该算法避免出现负数的情况,并且体现了良好的编程习惯,算法复杂度不高,与扫雷算法中随机布雷相似,,同样是让index随机
例如
function initmine(width,height,m)
{ var basic=[];//原始数组
var sum=width*height;//总的格子数
for(var x=0;x<sum; x++)
{
basic[x]=x;
}
for(var i=0;i<m;i++)
{
var rn=Math.floor(Math.random()*(basic.length));
minepostArray.push(basic[rn]);
basic.splice(rn,1);//避免随机数产生重复的
console.log(minepostArray[i]);
}
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。