0

我想计算一个从 1 到 MAX 的对数范围,数字的近似总数为 TOTAL。

一个非对数的例子可能是:

$max = 3600;
$total = 100;

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

然而,这会创建一个大致均匀分布的范围。我希望该范围在开始时拥有大部分数字,而在结束时数量较少 - 通过对数刻度。值的总数不是一个严格的限制,只是一个估计。

4

2 回答 2

2

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

要生成它,请使用

$max = 3600;
$total = 100;

$range = array();
for($i = 0; $i < $total; $i++) {
  $range[] = pow($max,$i/($total - 1));
}
于 2013-01-19T11:54:00.650 回答
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); 

希望有帮助...

于 2013-01-18T23:19:41.480 回答