php random x digit number

前端 未结 21 2138
耶瑟儿~
耶瑟儿~ 2020-12-04 15:00

I need to create a random number with x amount of digits.

So lets say x is 5, I need a number to be eg. 35562 If x is 3, then it would throw back something like; 463

相关标签:
21条回答
  • 2020-12-04 15:59

    the simplest way i can think of is using rand function with str_pad

    <?php
    echo str_pad(rand(0,999), 5, "0", STR_PAD_LEFT);
    ?>
    

    In above example , it will generate random number in range 0 to 999.

    And having 5 digits.

    0 讨论(0)
  • 2020-12-04 15:59
    function rand_number_available($already_mem_array,$boundary_min,$boundary_max,$digits_num)
    {
    
        $already_mem_array_dim = count($already_mem_array);         // dimension of array, that contain occupied elements
    
        // --- creating Boundaries and possible Errors
        if( empty($digits_num) ){   
                $boundary_dim = $boundary_max - $boundary_min;
                if($boundary_dim <= 0){
                    $error = -1;                                    // Error that might happen. Difference between $boundary_max and $boundary_min must be positive
                }else{
                    $error = -2;                                    // Error that might happen. All numbers between, $boundary_min and $boundary_max , are occupied, by $already_mem_array
                }                                   
        }else{
                if($digits_num < 0){                                // Error. If exist, $digits_num must be, 1,2,3 or higher
                    $error = -3; 
                }elseif($digits_num == 1){                          // if 'one-figure' number
                    $error = -4;                                    // Error that might happen. All 'one-figure' numbers    are occupied, by $already_mem_array
                    $boundary_min = 0;
                    $boundary_max = 9;
                    $boundary_dim = $boundary_max-$boundary_min;
                }elseif($digits_num == 2){                          // if 'two-figure' number
                    $error = -5;                                    // Error that might happen. All 'two-figure' numbers    are occupied, by $already_mem_array
                    $boundary_min = 10;
                    $boundary_max = 99;
                    $boundary_dim = $boundary_max-$boundary_min;
                }elseif($digits_num>2){                             // if 'X-figure' number. X>2
                    $error = -6;                                    // Error that might happen. All 'X-figure' numbers  are occupied, by $already_mem_array. Unlikely to happen
                    $boundary_min = pow(10, $digits_num-1);         // stepenovanje - graduation
                    $boundary_max = pow(10, $digits_num)-1;
                    $boundary_dim = $boundary_max-$boundary_min;
                }
    
        }
        // -------------------------------------------------------------------
    
    
        // --- creating response ---------------------------------------------
        if( ($already_mem_array_dim <= $boundary_dim)   &&  $boundary_dim>0 ){              // go here only if, there are AVAILABLE numbers to extract, and [difference] $boundary_dim , is positive
            do{
                $num = rand($boundary_min,$boundary_max);
            }while( in_array($num, $already_mem_array) );
            $result = $num;
        }else{
            $result = $error;                                       // Limit that happened  
        }
    
        return $result;
        // -------------------------------------------------------------------
    
    }
    
    0 讨论(0)
  • 2020-12-04 16:00
    function random_numbers($digits) {
        $min = pow(10, $digits - 1);
        $max = pow(10, $digits) - 1;
        return mt_rand($min, $max);
    }
    

    Tested here.

    0 讨论(0)
提交回复
热议问题