这是一个以%计算机会的好代码吗?


Is this a good code to calculate a chance in %?

这是计算25%几率的正确代码吗?

if(rand(1,100) < 25){
    echo 'succes';
}else{
    echo 'failed';
}
如果成功的几率是3.5%,我可以把25%改成3.5% ?

还是这样更好?

if (25 >= mt_rand(1,100)){
    echo 'succes';
}else{
    echo 'failed';
}

我认为你会想:

if(rand(1,100) <= 25) {
    echo 'success';
} else {
    echo 'failed';
}

如果你从一组100个数字中抽取;其中25次成功,P(success) = 25%

rand的文档说它返回一个int,所以要做分数,你需要缩放,例如3.5%:

if(rand(1,1000) <= 35) {
    echo 'success';
} else {
    echo 'failed';
}

正如其他人所建议的,您也可以使用mt_rand作为rand的直接替代品。根据文档,它可以比rand快四倍,并使用流行且性能良好的Mersenne twister伪随机数生成器。

使用左比较,即交换常量和函数调用以及反转比较操作符是许多编码约定的常见组成部分。当不小心使用赋值(=)而不是等号(==)时,这是一种防止微妙的赋值错误的技术。

要能够使用rand()并使用一个十进制值的方法,您可以使用以下命令:

if(rand(1, 1000) <= 35) {

在单独的函数中计算概率百分比可能更容易,并将答案返回到代码主部分的变量中,然后使用if语句检查它是否大于或等于25%。这只是我的两分意见。