【问题标题】:Generate an N-digit random number生成一个 N 位随机数
【发布时间】:2011-06-26 19:40:43
【问题描述】:

我想使用 PHP mt_rand() 函数生成一个 6 位随机数。

我知道 PHP mt_rand() 函数只需要 2 个参数:一个 minimum 和一个 maximum 值。

我该怎么做?

【问题讨论】:

    标签: php security random mcrypt


    【解决方案1】:

    这样的?

    <?php 
    $a = mt_rand(100000,999999); 
    ?>
    

    或者这样,那么第一个例子中的第一个数字可以是0,只能是1到9

    for ($i = 0; $i<6; $i++) 
    {
        $a .= mt_rand(0,9);
    }
    

    【讨论】:

      【解决方案2】:
          <?php
      //If you wanna generate only numbers with min and max length:
              function intCodeRandom($length = 8)
              {
                $intMin = (10 ** $length) / 10; // 100...
                $intMax = (10 ** $length) - 1;  // 999...
      
                $codeRandom = mt_rand($intMin, $intMax);
      
                return $codeRandom;
              }
      ?>
      

      【讨论】:

        【解决方案3】:

        您可以使用以下代码。

          <?php 
          $num = mt_rand(100000,999999); 
          printf("%d", $num);
          ?>
        

        这里是 mt_rand(min,max);
        min = 指定要返回的最小数字。
        max = 指定要返回的最大数字。

        `

        【讨论】:

          【解决方案4】:

          例子:

          print rand() . "<br>"; 
          //generates and prints a random number
          print rand(10, 30); 
          //generates and prints a random number between 10 and 30 (10 and 30 ARE included)
          print rand(1, 1000000); 
          //generates and prints a random number between on and one million
          

          More Details

          【讨论】:

            【解决方案5】:

            如果第一个成员编号可以为零,则需要对其进行格式化以在必要时用零填充。

            <?php 
            $number = mt_rand(10000,999999);
            printf("[%06s]\n",$number); // zero-padding works on strings too
            ?>
            

            或者,如果它可以从零开始,您可以这样做:

            <?php 
            $number = mt_rand(0,999999);
            printf("[%06s]\n",$number); // zero-padding works on strings too
            ?>
            

            【讨论】:

              【解决方案6】:

              据了解,应该是这样的;

              function rand6($min,$max){
                  $num = array();
              
                  for($i=0 ;i<6;i++){
                  $num[]=mt_rand($max,$min);
              
                  }
              return $num;
              }
              

              【讨论】:

                【解决方案7】:

                你可以这样内联:

                $randomNumbersArray = array_map(function() {
                    return mt_rand(); 
                }, range(1,6));
                

                或者简单的方法,用一个函数:

                $randomNumbersArray = giveMeRandNumber(6);
                
                function giveMeRandNumber($count)
                {
                    $array = array();
                    for($i = 0; $i <= $count; $i++) {
                        $array[] = mt_rand(); 
                    }
                }
                

                这些将产生一个像这样的数组:

                Array
                (
                    [0] => 1410367617
                    [1] => 1410334565
                    [2] => 97974531
                    [3] => 2076286
                    [4] => 1789434517
                    [5] => 897532070
                )
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-10-01
                  • 2011-08-09
                  • 2020-11-19
                  • 2018-04-03
                  • 1970-01-01
                  • 2023-01-03
                  相关资源
                  最近更新 更多