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);
    }
  • 相关阅读:
    传统工业制造商Opto 22宣布加入Linux基金会
    Android Stack
    An Overview of the Android Architecture (Android Studio)
    基于嵌入式操作系统的物联网安全
    什么是雾计算?它与云计算有什么区别?
    《速度与激情8》中的信息安全技术
    专利驳回的三大基本原因
    专利
    【习题 4-2 Uva201】Squares
    【习题4-1 Uva1589】Xiangqi
  • 原文地址:https://www.cnblogs.com/phpfensi/p/6383256.html
Copyright © 2011-2022 走看看