【问题标题】:Generate array with unique random numbers [duplicate]生成具有唯一随机数的数组[重复]
【发布时间】:2014-02-13 19:08:24
【问题描述】:

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

$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);

【问题讨论】:

    标签: php arrays


    【解决方案1】:
    $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);
    

    【讨论】:

      【解决方案2】:
      $x=0;
      $rand=array();
      while ($x<5) {
          $r=rand(1, 50);
          if(in_array($r, $rand)){
      
          }else{
          $rand[] = $r;
          $x++;
          }
      
      
      
      }
      var_dump($rand);
      

      【讨论】:

      • 这并不总是有效,因为 else 语句只运行一次。因此,如果 else 语句生成相同的数字,您仍然会遇到重复项。
      • @skrilled 感谢您指出这一点,我编辑了代码。
      【解决方案3】:

      试试这个:

      $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

      演示输出:

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

      【讨论】:

      • @gordon falvey:显然已经过测试。
      【解决方案4】:

      我有这个想法......应该有更好的想法,但我认为这个:

      $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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-16
        • 1970-01-01
        • 2013-12-14
        • 2016-05-24
        • 1970-01-01
        • 2016-03-01
        • 1970-01-01
        • 2016-07-03
        相关资源
        最近更新 更多