生成两个在PHP中不相等的数字

Fre*_*man 9 php random numbers

我需要生成两个在PHP中不相等的数字.

我知道我$random1 = (rand()%9);用来生成0-9之间的随机数.我想我需要添加一些内容.

谢谢!

use*_*291 49

$r = str_shuffle("0123456789");
$r1 = (int) $r[0];
$r2 = (int) $r[1];
Run Code Online (Sandbox Code Playgroud)

  • 哇,这实际上是一个非常巧妙的解决方案. (5认同)
  • 尽管具有确定性,但在一般情况下,此解决方案可能比公认的解决方案慢。此外,这不能扩展以处理两位数。 (2认同)

Zed*_*Zed 22

$rnd1 = rand(0,9);
do {
  $rnd2 = rand(0,9);
} while ($rnd1 == $rnd2);
Run Code Online (Sandbox Code Playgroud)

  • 从理论上讲,如果数字真的是随机的,这可能会永远循环.在大多数计算机应用程序中不太可能,但运行时间*是*不确定的,这可能是不可取的. (9认同)
  • 实际上,@ DrJokepu,我们确实计划了这种可能性(不一定是陨石,但绝对是服务器位置被破坏).我们有50多公里外的备用站点.我记得有一个偏执狂问我们如果两个地方发生灾难我们会怎么做.我的回答是,对于任何大的灾难,我们手上的问题比一些丢失的数据要多得多. (4认同)

Pet*_*ker 8

$random1 = (rand() % 10)
$random2 = $random1 + (rand()%9)+1 
Run Code Online (Sandbox Code Playgroud)

通过这种方式它们永远不会相等(因为至少1将被添加到$ random1)

如果两个数都必须是0-9,你只需要用最后一个mod操作:

$random1 = (rand() % 10)
$random2 = ($random1 + (rand()%9)+1 ) %10 
Run Code Online (Sandbox Code Playgroud)


Ali*_*xel 5

$numbers = array_rand(range(0, 9), 2);

echo '<pre>';
print_r($numbers);
echo '</pre>';
Run Code Online (Sandbox Code Playgroud)