对数系列数字从1到MAX

时间:2013-01-18 23:09:34

标签: php math

我想计算从1到MAX的对数范围,数字的总数大致为TOTAL。

非对数示例可能是:

$max = 3600;
$total = 100;

$range = array();
for($i = $total; $i > 0; $i--){
  $range[] = round($max/$i);
}

然而,这会产生大致相等的分布范围。我希望范围在开始时具有大部分数字,并且在结束时通过对数刻度得到的数字越少。值的总数不是严格限制,只是估计值。

2 个答案:

答案 0 :(得分:2)

关于对数刻度的有趣之处在于$range数组的元素(那些是您可能用于计算函数值x的值fct(x))实际上具有指数行为,而不是对数行为。如果你看一下这个Wikipedia image,你可以看到轴刻度是10 ^ 1,10 ^ 2,10 ^ 3等 - 这是指数增长(我说的是轴刻度,而不是函数本身!)。

要生成此内容,请使用

$max = 3600;
$total = 100;

$range = array();
for($i = 0; $i < $total; $i++) {
  $range[] = pow($max,$i/($total - 1));
}

答案 1 :(得分:0)

使用PDL似乎是您最好的选择:

require_once '../LognormalDistribution.php'; 
require_once 'make_table.php'; 

$mu     = 0.0;
$sigma  = 1.0;

$lognormal = new LognormalDistribution($mu, $sigma);

$Output1 = $lognormal->PDF(.2); 
$Output2 = $lognormal->ICDF(0.95); 
$Output3 = $lognormal->CDF(.50); 

希望有帮助...