关于php:使用唯一的随机数生成数组

Generate array with unique random numbers

本问题已经有最佳答案,请猛点这里访问。

我想生成一个带有随机数的数组。我不希望相同的值在数组中出现两次。我希望所有五个值都是唯一的。我该怎么办?

1
2
3
4
5
6
7
8
$rand1 = rand(1, 50);
$rand2 = rand(1, 50);
$rand3 = rand(1, 50);
$rand4 = rand(1, 50);
$rand5 = rand(1, 50);

$input = array($rand1,$rand2,$rand3,$rand4,$rand5);
print_r($input);

尝试一下:

1
2
3
4
5
6
7
8
9
10
$a = array();
for($i=0;$i<5;$i++){
 $rand1=rand(1, 5);
  while(in_array( $rand1,$a)){
   $rand1=rand(1, 5);
  }
  $a[$i] = $rand1;

}
print_r($a);

演示:https://eval.in/101433

演示输出:

1
2
3
4
5
6
7
8
Array
(
    [0] => 2
    [1] => 1
    [2] => 4
    [3] => 5
    [4] => 3
)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
$total = 10; // total random numbers to create

$randoms = array();

for($i=0;$i<=$total;$i++)
{
  $randomNumber = rand(1,50);
  while(in_array($randomNumber,$randoms)) {
    $randomNumber = rand(1,50);
  }
  $randoms[] = $randomNumber;
}

var_dump($randoms);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$x=0;
$rand=array();
while ($x<5) {
    $r=rand(1, 50);
    if(in_array($r, $rand)){

    }else{
    $rand[] = $r;
    $x++;
    }



}
var_dump($rand);


我有这个主意...应该有更好的主意,但是我认为这是一个主意:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$rand1 = rand(1, 50);
do{
    $rand2 = rand(1, 50);
}while($rand2==$rand1);

do{
    $rand3 = rand(1, 50);
}while($rand3==$rand2 || $rand3==$rand1);


do{
    $rand4 = rand(1, 50);
}while($rand4==$rand3 || $rand4==$rand2 || $rand4==$rand1);

 do{
    $rand5 = rand(1, 50);
}while($rand5==$rand4 || $rand5==$rand3 || $rand5==$rand2 || $rand5==$rand1);

$input = array($rand1,$rand2,$rand3,$rand4,$rand5); print_r($input);