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位.