我不太确定如何编写这个功能:我想生成一个0到2之间的随机数,然后编写一个if语句,只有33%的时间会执行特定的代码。
这是我尝试做的:
if (rand(0, 3)=="2") { echo "Success" };
这两个参数分别代表最小和最大随机值。如果你想要1/3的概率,那么你应该只允许3种可能性。从0到3的范围内有4个可能的值(0、1、2、3),所以它不能完全满足你的需求。此外,mt_rand()
比rand()
更好。
所以应该这样写:
if (mt_rand(1, 3) == 2)
echo "Success";
rand()
和mt_rand()
之间的差异很可能是不可察觉的;-) - JoeyPHP的rand()
函数限制是包含的,所以你需要使用if(rand(0,2) == 2)
。
只有33%的时间会执行特定代码。
我想指出,使用随机数只会使代码有33%的概率执行,而不是1/3的时间都会执行。
您的代码将有25%的概率被执行。{0 1 2 3}是由4个数字组成的集合。您希望进行以下操作:
if(rand(1,3)==2)...
替换为
if (rand(0, 2)==2) { echo "Success"; }
if(!rand(0,2))
{
//do stuff
}
1/x
,将 0,2
替换为 0,x-1
。
rand(0,2)
。执行rand(0,3)
会得到25%的概率。 - sshow