红包算法设计

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]);

}

 

 }  

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。