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);
    }
  • 相关阅读:
    linux下源码安装python3
    FTP 命令
    Linux Shell数值比较和字符串比较及相关
    mount umount sort du tar
    linux 自动检查ssh脚本
    删除linux访问记录(message删不了)
    h3c 备份脚本
    linux 批量scp 脚本
    Linux 删除几天前的文件脚本
    博达交换机镜像检查,镜像丢失自动添加脚本
  • 原文地址:https://www.cnblogs.com/phpfensi/p/6383256.html
Copyright © 2011-2022 走看看