这篇文章主要介绍了基于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,红包,分配
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“基于js实现抽红包并分配代码实例”评论...
更新动态
2024年11月18日
2024年11月18日
- 群星《魅音绝唱》黑胶CD【WAV】
- 腾格尔.2002-四十独白【风潮】【WAV+CUE】
- 陈明真.1992-到哪里找那么好的人【华星】【WAV+CUE】
- 黄凯芹.2012-廿五年3CD【环球】【WAV+CUE】
- 证声音乐图书馆《七夕 爵士情缘》[320K/MP3][64.8MB]
- 证声音乐图书馆《七夕 爵士情缘》[FLAC/分轨][327.79MB]
- 杨泰瑞《City Boy》[320K/MP3][28.71MB]
- 胡彦斌《失业情歌》首版[WAV+CUE]
- 杨泰瑞《City Boy》[FLAC/分轨][159.66MB]
- APM亚流新世代《一起冒险》[320K/MP3][68.66MB]
- FIM《天伦乐》(DaydreamsAndLullabies)24K金碟[WAV+CUE]
- 【雨果唱片】中国管弦乐《鹿回头》
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]