【来自媳妇的需要】PHP完结随机数和方程求解

  话说二〇一四.11.0六,香港(Hong Kong)下了第叁场雪。16年的今日没下雪,不过阴霾或许十分的大的,帮媳妇整理他工作时,出现了上面包车型大巴需要,便想到利用PHP来写程序来拓展求解。

PHP, 

【需求】

1.
交由四个平均值X,反过来求出来,获得这一个平均值X的四个数X1 ,X二,
X三,最大值与最小值的差值要低于0.四(X一-X三都以保存一位小数的数)

  1. 那八个数X1, X二,
    X三表示了叁组数。满足上边包车型地铁公式: X壹 = [(m1 – m2)/(m1 – m0) ] * 100
    (@1);

   m0, m一, m②四个数的界限条件如下:

   1)48<m0<51

 2)0.45<m1 – m1<0.55

 三)m一, m贰, m3 都以二位的正小数

 

【实现】 

 根据供给,小编想开了应用三个函数来进展处理。

  
一)三个是已知平平均数量,求得到这些平平均数量知足条件的八个数的函数
createX()

 2) 一个是已知X,求满意公式
(@一)和边界条件的四个小数 m0, m一, m二

 

上面是现实性的代码达成,不足之处请提议

 

<?php

//运行
echo "开始运行 \n";
run();
echo "运行结束 \n";

function run()
{/*{{{*/
    $data = array(40.9, 40.5, 44.3, 47.8, 48.5, 42.1, 46.2);
    $res = array();
    foreach($data as $key)
    {/*{{{*/
        echo "处理 {$key}\n";
        $resX = createX($key);
        foreach($resX as $keyX)
        {
            $keyStr = (string)$key;
            $keyXStr = (string)$keyX;
            $res[$keyStr][$keyXStr] = createParams4M($keyX);
        }


    }/*}}}*/

error_log(print_r($res,true)."\n", 3, '/tmp/result.log');
var_dump(99999,$res);exit;
    return $res;
}/*}}}*/

//1.产生平均数
function createX($ave)
{/*{{{*/
    $sum = 3*($ave * 1000);
    $x1 = $x2 = $x3 = 0;
    $rand4X1X2 = rand(0, 300);
    //$x2 > $x1 > $x3;
    for($i=0; $i< $ave * 1000 + 550; $i++)
    {
        $x2 = $i;
        $x1 = $x2 - $rand4X1X2;
        $x3 = $sum -($x1 + $x2); 
        $positive = $x1 > 0 && $x2 > 0 && $x3 > 0; 
        $flag = ($x2- $x3 < 400 && $x2 - $x3 > 200);

        if($positive && $flag)
        {
            //echo "捕捉到\n";
            $roundX1 = round($x1/1000, 1);
            $roundX2 = round($x2/1000, 1);
            $roundX3 = round($x3/1000, 1);
            $res =  array($roundX1, $roundX2, $roundX3);
            $flag = $roundX1 != $roundX2
                    && $roundX3 != $roundX2
                    && $roundX3 != $roundX1;
            if($flag)
            {
                //echo "捕捉到\n";
                return $res;
            }
        }
    }

    echo "Fail 未捕捉到\n";
    return array($x1, $x2, $x3);
}/*}}}*/

//2.产生平均数
function createParams4M($aveX)
{/*{{{*/
    $begin = 48000;
    $end = 51000;
    $m0 = $m1 = $m2 = 0;
    $rand4M1M2 = rand(450, 550);
    $m0 = rand($begin, $end);
    $m1 = $m0 + $rand4M1M2;
    $m2 = $m1 - (($m1 - $m0)*$aveX/100);
    //echo "捕捉到\n";
    return array(round($m0/1000, 4), round($m1/1000, 4), round($m2/1000, 4));

}/*}}}*/

?>

 

 

 

 

 

【蒙受的标题和不足之处】

一.
【数组key值无法平等】开始蒙受的是
获得的平平均数量的本来面目四个值有非常的大只怕有同一的,可是数组中的key是无法平等的,于是做了拍卖。

    同时,key值做了
string的转化

 

  1. 【小数处理】还有正是 因为涉及的是
    3位的小数,循环遍历,知足条件输出不方便人民群众,就
    乘以一千扩展倍数,最终再除以1000过来。

 

  1. 【媳妇新的渴求。。】最终就是因为媳妇的须求还是会转移的,希望我做成app性质的,那样他得以安装后,自个儿能够随时使用,

  
然则对于自个儿那只懂PHP的猿来说,爱莫能助,最多正是申请Ali云,搭建服务器,依照她转移的供给,服务端修改程序,web访问就不错了,汗

 

PHP 1

 

 

    

相关文章