我认为它可以是数学正态分布问题,但我想在php编码。这就是问题所在
在我的约会网站上,我想为每个男人介绍两个女人。这是一个年龄基础问题。男人就像-8 ~ +4岁的女人。(当然,每个国家的情况都不一样。但在中国,大多数夫妻都在这个范围内。)因此,当男性比女性大2岁时(-2)匹配得分最高,当女性年龄为-8 ~ +4岁时,匹配覆盖率必须为98%。
$min = -8;
$max = 4;
$coverage_percent = 0.98f;
function matching_score($man_age, $woman_age)
{
$score = <- some normal distribution function ->;
return $score;
}
我将为每个男人选出两个得分最高的女人。
该方法对所有夫妇的概率为98%。
php中是否有快速的正态分布概率函数?
我所知道的编程语言没有内置的正态分布函数,因此必须获得一个库或自己实现。只有更高层次的环境,比如Excel和Matlab才能提供这种东西。我不懂PHP,但下面是我在c#中使用的正态分布实现,所以大概你可以转换为PHP。它有CDF(累积分布函数)和PDF(概率分布函数)。
public class Normal {
public const double INVRTP = .398942280401433; // INVerse of Root Two Pi !!
private const double y0 = 0.2316419,
a0 = 0.31938153,
a1 = -0.356563782,
a2 = 1.781477937,
a3 = -1.821255978,
a4 = 1.330274429;
public static double NormalCDF(double x) {
double y = 1.0 / (1 + y0 * System.Math.Abs(x));
y = 1.0 - NormalPDF(x) * (y * (a0 + y * (a1 + y * (a2 + y * (a3 + y * a4)))));
return (x <= 0.0) ? 1.0 - y : y;
}
public static double NormalPDF(double x) {
return INVRTP * System.Math.Exp(-x * x / 2.0);
}
}