Мне нужно создать случайное число с x количеством цифр.
Поэтому давайте скажем, что x равно 5, мне нужно число, например. 35562 Если x равно 3, тогда он будет отбрасывать что-то вроде; 463
Может ли кто-нибудь показать мне, как это делается?
 Вы можете использовать rand() вместе с pow() чтобы это произошло: 
 $digits = 3; echo rand(pow(10, $digits-1), pow(10, $digits)-1); 
Это выведет число от 100 до 999. Это потому, что 10 ^ 2 = 100 и 10 ^ 3 = 1000, а затем вам нужно вычесть его с помощью одного, чтобы получить его в нужном диапазоне.
Если 005 также является допустимым примером, вы должны использовать следующий код, чтобы поместить его с ведущими нулями:
 $digits = 3; echo str_pad(rand(0, pow(10, $digits)-1), $digits, '0', STR_PAD_LEFT); 
  Вы можете использовать rand($min, $max) для этой цели. 
Чтобы ограничить значения значениями с помощью x цифр, вы можете использовать следующее:
 $x = 3; // Amount of digits $min = pow(10,$x); $max = pow(10,$x+1)-1); $value = rand($min, $max); 
  Обычно я просто использую RAND() http://php.net/manual/en/function.rand.php 
например
 rand ( 10000 , 99999 ); 
для вашего 5-значного случайного числа
Рассматривайте свой номер как список цифр и просто добавляйте случайную цифру каждый раз:
 function n_digit_random($digits) { $temp = ""; for ($i = 0; $i < $digits; $i++) { $temp .= rand(0, 9); } return (int)$temp; } 
Или чисто численное решение:
 function n_digit_random($digits) return rand(pow(10, $digits - 1) - 1, pow(10, $digits) - 1); } 
 function random_numbers($digits) { $min = pow(10, $digits - 1); $max = pow(10, $digits) - 1; return mt_rand($min, $max); } 
Протестировано здесь .
  самый простой способ, которым я могу думать, – использовать функцию rand с str_pad 
 <?php echo str_pad(rand(0,999), 5, "0", STR_PAD_LEFT); ?> 
В приведенном выше примере он будет генерировать случайное число в диапазоне от 0 до 999 .
И имеет 5 цифр.
сделайте это с помощью цикла:
 function randomWithLength($length){ $number = ''; for ($i = 0; $i < $length; $i++){ $number .= rand(0,9); } return (int)$number; } 
  rand или mt_rand … 
Применение:
 rand(min, max); mt_rand(min, max); 
 rand(1000, 9999);  работает быстрее, чем x4 раза rand(0,9); 
тест:
 rand(1000, 9999) : 0.147 sec. rand(0,9)x4 times : 0.547 sec. 
обе функции выполнялись в 100000 итерациях, чтобы сделать результаты более явными
 function random_number($size = 5) { $random_number=''; $count=0; while ($count < $size ) { $random_digit = mt_rand(0, 9); $random_number .= $random_digit; $count++; } return $random_number; } 
Вот простое решение без каких-либо циклов или любых проблем, которые позволят вам создать случайную строку с символами, цифрами или даже со специальными символами.
 $randomNum = substr(str_shuffle("0123456789"), 0, $x); 
  где $x может быть числом цифр 
  Например. substr(str_shuffle("0123456789"), 0, 5); 
Результаты после нескольких казней
 98450 79324 23017 04317 26479 
Вы можете использовать тот же код для генерации случайной строки, как это
 $randomNum=substr(str_shuffle("0123456789abcdefghijklmnopqrstvwxyzABCDEFGHIJKLMNOPQRSTVWXYZ"), 0, $x); 
  Результаты с $x = 11 
 FgHmqpTR3Ox O9BsNgcPJDb 1v8Aw5b6H7f haH40dmAxZf 0EpvHL5lTKr 
этот простой скрипт будет
 $x = 4;//want number of digits for the random number $sum = 0; for($i=0;$i<$x;$i++) { $sum = $sum + rand(0,9)*pow(10,$i); } echo $sum; 
Это еще одно простое решение для генерации случайного числа из N цифр:
 $number_of_digits = 10; echo substr(number_format(time() * mt_rand(),0,'',''),0,$number_of_digits); 
Проверьте это здесь: http://codepad.org/pyVvNiof
 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; // ------------------------------------------------------------------- } 
вам люди очень любят усложнять вещи 🙂
реальная проблема в том, что OP хочет, вероятно, добавить это к концу некоторого действительно большого числа. если нет, я не могу придумать, для чего это необходимо. поскольку левые нули в любом числе – это просто, ну, левые нули.
поэтому просто добавьте большую часть этого числа в математическую сумму, а не строку.
например
 $x = "102384129" . complex_3_digit_random_string(); 
просто становится
 $x = 102384129000 + rand(0, 999); 
сделанный.