如果我想创建一个调查,显示你未来孩子的性别,计算男女比例是1.05比1。假设每对夫妇只生一个孩子。如何在php中实现呢?
rand (0,1);
将生成一个随机数(1或0),可以表示性别。但是,如何将比率作为概率应用于得到那个数字呢?
我知道比率非常接近,也许将比率应用于我的函数根本不会影响结果。但我这样做是为了自我教育,所以,给我一个例子,告诉我如何做到这一点。
根据@Michael Berkowski的评论:
/**
* Generate random baby gender adjusted by ratio male to female 1.05:1
*
* @return
* TRUE if male or FALSE if female
*/
function is_random_male() {
return rand(1, 205) <= 105;
}
echo is_random_male() ? 'male' : 'female';
1.05 to 1相当于:
- 男性% = (1/2.05)* 100% = 48,78..%
- 女性百分比= (1.05/2.05)* 100% = 51.22..%
现在,根据所需的精度,您可以执行以下算法:
$rnd = rand(0,100);
if ($rnd < 48 ) {
//male
}
else {
//female
}
如果你想要更精确:
$rnd = rand(0,10000);
if ($rnd < 4878 ) {
//male
}
else {
//female
}