您好,登錄后才能下訂單哦!
這篇文章主要介紹基于js如何實現抽紅包并分配,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
將 50000元隨機分給10個人,其中3個人必須分到百位數,4個人分到千位數,3個人分到萬位數,每個人所得金額
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>Document</title> </head> <body> 將 50000元隨機分給10個人,其中3個人必須分到百位數,4個人分到千位數,3個人分到萬位數,每個人所得金額 </body> <script type="text/javascript"> /** * * @param {Object} amount 總數錢 * @param {Object} list [2,2,2,3,3,3,3,4,4,4] 3個百位,4個千位,3個萬位 */ //不要小數 function devide(amount,list){ var len = list.length; //先計算所有的自身位數范圍 var arr = []; for(var i = 0; i < len; i++){ var item = getRange(list[i]); arr.push(item); } var res = []; //只算n-1位,剩下最后一個,不用計算 for(var i = 0; i < len-1; i++){ var index = Math.floor(Math.random() * arr.length); //隨機獲取一個,然后用來取 var item = arr.splice(index,1)[0]; //取出當前需要發的紅包位數 var result = calc(amount,item,arr); if(result){ res.push(result); amount = amount - result; }else{ return []; } } if(arr[0].start > amount || arr[0].end < amount){ console.warn("分配出現錯誤,請重新規劃分配方案"); return []; } res.push(amount); return res; } function calc(amount,item,arr){ //當其他的都取最小值時的總和,為了保證每個都分到 var otherRange = getOtherRange(arr); var minStart = otherRange.countStart; var maxEnd = otherRange.countEnd; var mins = amount - minStart; //剩余可取 var end = item.end; var start = item.start; if(start > mins){ console.warn("分配出現錯誤,請重新規劃分配方案"); return false; }else if(end > mins){ //如果最大范圍大于剩余的 end = mins; } //則隨機抽取從 start至end var result = Math.floor(Math.random()*(end-start) + start); if(amount - result > maxEnd){ //取的值太小,其他的取最大值也分不完 console.warn("分配出現錯誤,請重新規劃分配方案"); } return result; } //獲取某位的范圍 function getRange(item){ return { start:Math.pow(10,item), //比如百位2,這里最小就是100 end: Math.pow(10,item+1) - 1 //百位最大為 1000-1 } } //獲取所有的范圍 function getOtherRange(arr){ var countStart = 0; var countEnd = 0; for(var i = 0; i < arr.length; i++){ countStart += arr[i].start; countEnd += arr[i].end; } return { countStart, countEnd }; } console.log(devide(50000,[2,2,2,3,3,3,3,4,4,4])) </script> </html>
以上是“基于js如何實現抽紅包并分配”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。