定义随机数的百分比

Sab*_*san 2 php

我的rand(0,1)PHP函数返回我01随机当我打电话吧.

我可以在php中定义一些东西,这样它就会产生30%数字,0并且70%数字将1用于随机调用吗?php有没有内置函数?

Mar*_*eed 13

当然.

 $rand = (float)rand()/(float)getrandmax();
 if ($rand < 0.3)
    $result = 0;
 else
    $result = 1;
Run Code Online (Sandbox Code Playgroud)

您也可以处理任意结果和权重.

 $weights = array(0 => 0.3, 1 => 0.2, 2 => 0.5);
 $rand = (float)rand()/(float)getrandmax();
 foreach ($weights as $value => $weight) {
    if ($rand < $weight) {
       $result = $value;
       break;
    }
    $rand -= $weight;
  }
Run Code Online (Sandbox Code Playgroud)


Sto*_*oic 5

您可以执行以下操作:

$rand = (rand(0,9) > 6 ? 1 : 0)
Run Code Online (Sandbox Code Playgroud)

rand(0,9)会产生一个介于0到9之间的随机数,并且每当该随机生成的数字大于6(应该接近70%的时间)时,它就会给您1其他信息0...

显然,这对我来说似乎是最简单的解决方案,但是可以肯定的是,它不会给您170%的机会,但是如果正确完成的话,应该相距很近。

但是,我怀疑任何基于的解决方案rand都将给您170%的时间...

  • 你的逻辑不是很倒退吗?70% 的时间它会产生“0”。另外,如果您想要更高的准确性:`$rand = (rand(1,100) &lt;= 70 ? 1 : 0)` (2认同)