PHP rand()排除某些数字

Por*_*nia 11 php

我有这个:

<?php  $n = rand(1,1600); echo $n ?>
Run Code Online (Sandbox Code Playgroud)

我想从随机数中排除让我们说234,1578,763,1274和其他数字.我该怎么办?

Pat*_*ans 12

<?php

while( in_array( ($n = rand(1,1600)), array(234, 1578 ,763 , 1274) ) );
Run Code Online (Sandbox Code Playgroud)

  • 如果您来自PHP7,请不要使用rand,mt_rand或更好的random_int。 (3认同)

Gau*_*164 10

试试这样吧

do {   
    $n = rand(1,1600);

} while(in_array($n, array(234, 1578 ,763 , 1274 ));
echo $n;
Run Code Online (Sandbox Code Playgroud)


Sch*_*eis 8

如果获得一个新的随机数,请检查该号码是否是您不想要的号码.

function getRandomNumber() {
    do {
        $n = mt_rand(1,1600);
    } while(in_array($n, array(234,1578, 763, 1274)));

    return $n;
}
Run Code Online (Sandbox Code Playgroud)

  • @ClaudioLudovicoPanetta-如果while循环完美运行,为什么要使其递归? (2认同)