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

时间:2011-10-20 11:11:13

标签: php math

这是计算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';
}

3 个答案:

答案 0 :(得分:1)

为了能够使用rand()并使用带有一个十进制值的方法,您可以使用以下内容:

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

答案 1 :(得分:1)

我认为你想要迂腐:

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

即你从一组100个数字中抽取;其中25个被计为成功,因此P(成功)= 25%

docs for rand说它返回一个int,所以你需要进行缩放,例如3.5%:

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

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

使用左手比较,即交换常量和函数调用以及反转比较运算符是许多coding conventions的常见组件。当一个意外使用赋值(=)而不是equals(==)时,这被用作防止细微分配错误的技术。

答案 2 :(得分:0)

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