特殊红包需求js代码实现

需求:

见摘要

思路:

既然最少要6块钱,那就先给每人发600分,还剩下4000分。创建相关数组:

var res = [600,600,600,600,600,600,600,600,600,600];

剩下4000分怎么分呢? 开始给10个从头添加呗,万一添加的过多怎么办呢 ?限制最多不能超过啊?如何控制呢生成一个[0,1200-current]当前区间的添加值!具体如何生成详见实现。如果,一轮循环之后还没有分完,接着进行下一轮的操作。直到剩下的钱分完了为止!

 

具体实现:

<script>
        (function(){
            /**
             *  随机相关整数范围
             */
            function range(min,max){
                num = Math.random();
                ran = parseInt(Math.floor(num*(max-min+1)))+min;
                return ran;
            }
            /**
             *  判断总金额是否已经分完
             */
            function finished(left){
                if(left<=0) return true;
                return false;
            }

            var res=[600,600,600,600,600,600,600,600,600,600];
            var ran;
            var left=3000;

            for(var i=0;;i++){
                j=i%10;
                // 保证每十次是一个循环且是重复的一轮的自I技能的重新划分
                if(res[j]>=1200) continue;
                ran = range(0,1200-res[j]);
                left = left - ran;
                if(finished(left)){
                    res[j]+=(left+ran);
                    // 如果此次的随机的数字已经超过了最后的剩余的金额的话,则把最后的金额分给本次的循环的人
                    break;
                }
                res[j]+=ran;
            }
            document.write(res);
            document.write("<br>");
            var total =0;
            for(i in res){
                total+=res[i];
            }
            document.write(total);
        })()
    </script>

 

转载于:https://my.oschina.net/wjhblog/blog/719601

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值