长沙PHP培训
达内长沙芙蓉路中心

15017569023

热门课程

PHP实现随机数和方程求解

  • 时间:2016-11-07 17:21
  • 发布:长沙达内php培训学校
  • 来源:PHP教程

长沙达内PHP培训的老师今天给大家讲讲PHP实现随机数和方程求解。

【需求】

1.给出一个平均值X,反过来求出来,得到这个平均值X的三个数X1,X2,X3,最大值与最小值的差值要小于0.4(X1-X3都是保留1位小数的数)

2.这三个数X1, X2, X3代表了三组数。满足下面的公式:X1 = [(m1 - m2)/(m1 - m0) ] * 100(@1);

m0, m1, m2三个数的边界条件如下:

1)48<m0<51

2)0.45<m1 - m1<0.55

3)m1, m2, m3都是4位的正小数

【实现】

根据需求,我想到了使用两个函数来进行处理。

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

2)一个是已知X,求满足公式(@1)和边界条件的三个小数m0, m1, m2

下面是具体的代码实现,不足之处请指出

<?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));

}/*}}}*/

?>

了解详情请登陆长沙达内PHP培训官网(cs.php.tedu.cn)!

上一篇:PHP中的Array数组和foreach
下一篇:前端学PHP之变量

马上预约三天免费体验课

姓名:

电话:

hp中urlencode()和urldecode()URL编码函数

php的冒泡排序和快速排序

前端学PHP之变量

PHP实现随机数和方程求解

选择城市和中心
贵州省

广西省

海南省