zoukankan      html  css  js  c++  java
  • 生成n个随机数,要求n个数的和等于100

    // 生成n个随机数,要求n个数的和等于100
    function lessANumber(n, v) {
        var i,
            s = 0,
            r = [],
            x = v;
        for (i = 1; i < n; i++) {
            x = Math.random() * x;
            r.push(x.toFixed(0));
            s += x;
            x = v - s;
        }
        r.push(x.toFixed(0));
        return r;
    }
    function random(Min,Max){
             var Range = Max - Min;
             var Rand = Math.random();
             return(Min + Math.round(Rand * Range));
        }
        
        function randnum(n,max){
            
            var arr = [];
            if(max > 0){
                for(var i = 0;i<n;i++){
                    var num = 0;
                        if(i == (n-1)){
                            num = max;
                        }else{
                            if(max <= 0){
                                num = max = 0;
                            }else{
                                num = random(0,max);
                                max -= num;
                            }
                        }
                    arr.push(num);
                }
            }
            return arr;
        }
    
    
    
    
    
    function foo($n ,$max = 100){
        $array = $zero = $normal = [];
        for($i=1;$i<=$n;$i++){
            $array[] = mt_rand(0,100);
        }
        $k = $max / array_sum($array);  //求出放大系数k
        foreach($array as $key => $val){
            $value = floor($val * $k); //直接保留整数,以保证下一步的和肯定<100
            if($value<1){
                $zero[] = $value;
            }else{
                $normal[] = $value;
            }
        }
        $sum = array_sum($normal);
        $diff = $max - $sum; //这个值肯定<100
        if(!empty($zero)){ //如果有为0的值
            $count = count($zero);
            foreach($zero as $z){
                $normal[] = $diff / $count;
            }
        }else{ //随机分配给一个人
            $key = array_rand($normal);
            $normal[$key] = $normal[$key]+$diff;
        }
        unset($array,$zero,$sum,$diff);
        return $normal;
    }

    javascript里的Math.random() 函数, 在php里

    function random($min = 0, $max = 1)
    {
        return $min + mt_rand()/mt_getrandmax()*($max-$min);
    }
  • 相关阅读:
    iOS 10 因苹果健康导致闪退 crash-b
    iOS10 配置须知-b
    iOS开发 适配iOS10以及Xcode8-b
    iOS 10 的适配问题-b
    mybatis中分页查询
    mybatis开发流程,增删改查
    spring mvc接收参数方式,json格式返回请求数据
    xml配置文件中常见的命名空间解释
    myeclipse中配置schemaLocation路径,实现xml文件自动提示
    spring MVC工作流程
  • 原文地址:https://www.cnblogs.com/phpfensi/p/6383256.html
Copyright © 2011-2022 走看看