PHP實(shí)現(xiàn)的方程求解示例分析
本文實(shí)例講述了PHP實(shí)現(xiàn)的方程求解。分享給大家供大家參考,具體如下:
一、需求
1. 給出一個(gè)平均值X,反過(guò)來(lái)求出來(lái),得到這個(gè)平均值X的三個(gè)數(shù)X1 ,X2, X3,最大值與最小值的差值要小于0.4(X1-X3都是保留1位小數(shù)的數(shù))
2. 這三個(gè)數(shù)X1, X2, X3代表了三組數(shù)。滿足下面的公式: X1 = [(m1 - m2)/(m1 - m0) ] * 100 (@1);
m0, m1, m2三個(gè)數(shù)的邊界條件如下:
1)48<m0<51
2)0.45<m1 - m1<0.55
3)m1, m2, m3 都是4位的正小數(shù)
二、實(shí)現(xiàn)
根據(jù)需求,我想到了使用兩個(gè)函數(shù)來(lái)進(jìn)行處理。
1)一個(gè)是已知平均數(shù),求得到這個(gè)平均數(shù)滿足條件的三個(gè)數(shù)的函數(shù) createX()
2) 一個(gè)是已知X,求滿足公式 (@1)和邊界條件的三個(gè)小數(shù) m0, m1, m2
下面是具體的代碼實(shí)現(xiàn),不足之處請(qǐng)指出
<?php //運(yùn)行echo "開(kāi)始運(yùn)行 \n"; run(); echo "運(yùn)行結(jié)束 \n"; function run() {/*{{{*/$data = array(40.9, 40.5, 44.3, 47.8, 48.5, 42.1, 46.2); $res = array(); foreach($dataas$key) {/*{{{*/echo "處理 {$key}\n"; $resX = createX($key); foreach($resXas$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.產(chǎn)生平均數(shù)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"; returnarray($x1, $x2, $x3); }/*}}}*///2.產(chǎn)生平均數(shù)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";returnarray(round($m0/1000, 4), round($m1/1000, 4), round($m2/1000, 4)); }/*}}}*/?>
三、遇到的問(wèn)題和不足之處
1. 【數(shù)組key值不能相同】開(kāi)始遇到的是 得到的平均數(shù)的原始三個(gè)值有可能有相同的,但是數(shù)組中的key是不能相同的,于是做了處理。
同時(shí),key值做了 string的轉(zhuǎn)化
2. 【小數(shù)處理】還有就是 因?yàn)樯婕暗氖?4位的小數(shù),循環(huán)遍歷,滿足條件輸出不方便,就 乘以1000擴(kuò)大倍數(shù),最后再除以1000還原。
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《php操作office文檔技巧總結(jié)(包括word,excel,access,ppt)》、《PHP數(shù)組(Array)操作技巧大全》、《php排序算法總結(jié)》、《PHP常用遍歷算法與技巧總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《php正則表達(dá)式用法總結(jié)》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- Java實(shí)現(xiàn)解數(shù)獨(dú)的小程序
- JavaScript遍歷求解數(shù)獨(dú)問(wèn)題的主要思路小結(jié)
- python實(shí)現(xiàn)數(shù)獨(dú)算法實(shí)例
- Go語(yǔ)言實(shí)現(xiàn)的最簡(jiǎn)單數(shù)獨(dú)解法
- c++遞歸解數(shù)獨(dú)方法示例
- JQuery開(kāi)發(fā)的數(shù)獨(dú)游戲代碼
- PHP經(jīng)典算法集錦【經(jīng)典收藏】
- php編寫(xiě)的抽獎(jiǎng)程序中獎(jiǎng)概率算法
- php 大數(shù)據(jù)量及海量數(shù)據(jù)處理算法總結(jié)
- 適用于抽獎(jiǎng)程序、隨機(jī)廣告的PHP概率算法實(shí)例
- php中最簡(jiǎn)單的字符串匹配算法
- php數(shù)字轉(zhuǎn)漢字代碼(算法)
- PHP實(shí)現(xiàn)的數(shù)獨(dú)求解問(wèn)題示例
相關(guān)文章
PHP 利用AJAX獲取網(wǎng)頁(yè)并輸出的實(shí)現(xiàn)代碼(Zjmainstay)
PHP 利用AJAX獲取網(wǎng)頁(yè)并輸出的實(shí)現(xiàn)代碼,需要的朋友可以參考下2012-08-08在PHP程序中運(yùn)行Python腳本(接收數(shù)據(jù)及傳參)的方法詳解
這篇文章主要為大家詳細(xì)介紹一下,如何在php程序中運(yùn)行Python腳本以及如何使用python返回josn數(shù)據(jù)供php使用,感興趣的小伙伴可以了解一下2022-09-09PHP大轉(zhuǎn)盤中獎(jiǎng)概率算法實(shí)例
這篇文章主要介紹了PHP大轉(zhuǎn)盤中獎(jiǎng)概率算法,實(shí)例講述了概率算法的實(shí)現(xiàn)過(guò)程,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10php實(shí)現(xiàn)動(dòng)態(tài)口令認(rèn)證的示例代碼
這篇文章主要為大家詳細(xì)介紹了php實(shí)現(xiàn)動(dòng)態(tài)口令認(rèn)證的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02PHP實(shí)現(xiàn)生成帶背景的圖形驗(yàn)證碼功能
這篇文章主要介紹了PHP實(shí)現(xiàn)生成帶背景的圖形驗(yàn)證碼功能,結(jié)合實(shí)例形式詳細(xì)分析了php生成帶背景的圖形驗(yàn)證碼操作相關(guān)步驟與操作技巧,需要的朋友可以參考下2016-10-10如何用PHP實(shí)現(xiàn)分布算法之一致性哈希算法
進(jìn)行大型網(wǎng)站的web開(kāi)發(fā)時(shí),分布式這個(gè)詞經(jīng)常出現(xiàn)在我們面前。如: memcache、redis服務(wù)器等緩存服務(wù)器的負(fù)載均衡(分布式cache)、 MySQL的分布式集群,這些都會(huì)用到分布式的思想,都要理解分布式算法。接下來(lái)以緩存服務(wù)器的負(fù)載均衡來(lái)談一下一致性哈希算法。2021-05-05