php開方
A. 怎麼用php畫一個拋物線
<?php
/*
*Author:Kermit
*Time:2015-8-26
*Note:紅包生成隨機演算法
*/
header("Content-type:text/html;charset=utf-8");
date_default_timezone_set('PRC');
#紅包生成的演算法程序
classreward
{
public$rewardMoney;#紅包金額、單位元
public$rewardNum;#紅包數量
public$scatter;#分散度值1-10000
public$rewardArray;#紅包結果集
#初始化紅包類
publicfunction__construct()
{
$this->rewardArray=array();
}
#執行紅包生成演算法
publicfunctionsplitReward($rewardMoney,$rewardNum,$scatter=100)
{
#傳入紅包金額和數量
$this->rewardMoney=$rewardMoney;
$this->rewardNum=$rewardNum;
$this->scatter=$scatter;
$this->realscatter=$this->scatter/100;
/*
*前言:今天我突然這樣一想,比如要把1個紅包分給N個人,實際上就是相當於要得到N個百分比數據
*條件是這N個百分比之和=100/100。這N個百分比的平均值是1/N。
*並且這N個百分比數據符合一種正態分布(多數值比較靠近平均值)
*觀點:微信紅包里很多0.01的紅包,我覺得這是微信程序里的人為控制,目的是為了防止總紅包數超過總額,先分了幾個0.01的紅包。
*不然不管是以隨機概率還是正態分布都很難會出現非常多的0.01元紅包。
*/
#我的思路:正如上面說的,比如:1個紅包發給5個人,我要得出5個小數,它們的和是1,他們的平均值是1/5
#計算出發出紅包的平均概率值、精確到小數4位。即上面的1/N值。
$avgRand=round(1/$this->rewardNum,4);
#紅包的向平均數集中的分布正像數學上的拋物線。拋物線y=ax2,|a|越大則拋物線的開口就越小,|a|越小則拋物線的開口就越大,a>0時開口向上,我們這都是正數,就以a>0來考慮吧。
#程序里的$scatter值即為上方的a,此值除以100,當做100為基準,
#通過開方(數學里的拋物線模型,開方可縮小變化值)得出一個小數字較多(小數字多即小紅包多)的隨機分布,據此生成隨機數
$randArr=array();
while(count($randArr)<$rewardNum)
{
$t=round(sqrt(mt_rand(1,10000)/$this->realscatter));
$randArr[]=$t;
}
#計算當前生成的隨機數的平均值,保留4位小數
$randAll=round(array_sum($randArr)/count($randArr),4);
#為將生成的隨機數的平均值變成我們要的1/N,計算一下生成的每個隨機數都需要除以的值。我們可以在最後一個紅包進行單獨處理,所以此處可約等於處理。
$mixrand=round($randAll/$avgRand,4);
#對每一個隨機數進行處理,並剩以總金額數來得出這個紅包的金額。
$rewardArr=array();
foreach($randArras$key=>$randVal)
{
$randVal=round($randVal/$mixrand,4);
$rewardArr[]=round($this->rewardMoney*$randVal,2);
}
#對比紅包總數的差異、修正最後一個大紅包
sort($rewardArr);
$rewardAll=array_sum($rewardArr);
$rewardArr[$this->rewardNum-1]=$this->rewardMoney-($rewardAll-$rewardArr[$this->rewardNum-1]);
rsort($rewardArr);
#對紅包進行排序一下以方便在前台圖示展示
foreach($rewardArras$k=>$value)
{
$t=$k%2;
if($t)array_push($this->rewardArray,$value);
elsearray_unshift($this->rewardArray,$value);
}
$rewardArr=NULL;
return$this->rewardArray;
}
}
$money=1000;#總共要發的紅包數;
$people=50;#總共要發的人數
$scatter=100;#分散度
$reward=newreward();
$rewardArr=$reward->splitReward($money,$people,$scatter);
echo"發放紅包個數:{$people},紅包總金額{$money}元。下方所有紅包總額之和:".array_sum($reward->rewardArray).'元。下方用圖展示紅包的分布';
echo'<hr>';
echo"<tablestyle='font-size:12px;width:600px;border:1pxsolid#ccc;text-align:left;'><tr><td>紅包金額</td><td>圖示</td></tr>";
foreach($rewardArras$val)
{
#線條長度計算
$width=intval($people*$val*300/$money);
echo"<tr><td>{$val}</td><tdwidth='500px;text-align:left;'><hrstyle='width:{$width}px;height:3px;border:none;border-top:3pxdoublered;margin:0auto00px;'></td></tr>";
}
echo"</table>";
?>
B. php語言怎麼開根號
sqrt函數,例如:
echo sqrt(16);
C. php怎麼開立方
類似筆算開平方有一個演算法,但是很麻煩以至於根本就不用
立方根表是用牛頓迭代法計算方程得出來的,不用開方,通過多次近似得出結果
D. php中怎樣求立方根
性質:
(1)任何數都有立方根內,且都只有一個立方根.
(2)正數的容立方根是正數,負數的立方根是負數,0的立方根是0.
定義:如果一個數b,使得b³=a,那麼我們把b叫做a的一個立方根,a的立方根記做3根號a.
例如,2的立方為8,那8的立方根就為2..再比如,求27的立方根,因為3的立方為27,所以開方為3,(其實某數的立方根也可以化為某數的三分之一次冪),比如求24的立方根,那麼24可以看做是3和8的乘積,3已經是最簡開不出來,8開根號為2,那24的立方根就為2倍的三次根號下3,
其實多練一下就好了,把1到10的十個數字中每一個數的平方,立方是幾記住,下次開根號的時候就會簡單很多,還有書上的定義啊,也要理解
E. 編寫一個 php 網頁,令它使用 while 循環計算 4096 是 2 的幾次方,然後將結果顯示在網 頁上
PHP自帶參數只有sqrt 平方根 只能手寫程序 你要知道如何開方
function sq($n){
$x=1;
for($i=0;$i<1000;$i++){
$x=($x+$n/$x)/2;
}
return $x;
}
F. php里怎麼計算標准差
你在數學擴展里找找 先要要開啟數學擴展 改一個下php.ini文件
G. PHP 語言 怎樣用自定義函數 求 平方根
通常用迭代求平方根的方法,例如求正數a的平方根,可取迭代公式為:
X(n+1)=(Xn+a/Xn)/2
a=6,取初值版x0=2
x1=2.5
x2=2.45
x3=2.449489796
x4=2.449489743
而根號6的准確值為:權2.449489743
因此只需計算3步就已經精確到了小數點後7位.
H. php,is_null 和==null為什麼結果不同
php,is_null() 函數檢測變數是否為 NULL
null PHP中一種特殊的數據類型,表示空值,即表示沒有為該變數設置任何值null(空值)。
I. PHP語言 怎樣用自定義函數做平方根運算
通常用抄迭代求平方根襲的方法,例如求正數a的平方根,可取迭代公式為:
X(n+1)=(Xn+a/Xn)/2
a=6,取初值x0=2
x1=2.5
x2=2.45
x3=2.449489796
x4=2.449489743
而根號6的准確值為:2.449489743
因此只需計算3步就已經精確到了小數點後7位.