Я хочу создать случайное число в PHP, где цифры не должны повторяться в этом числе. Это возможно? Можете ли вы вставить здесь пример кода? Пример: 674930, 145289. [т.е. То же самое число не должно появляться] Спасибо
Вот хороший способ сделать это:
$amountOfDigits = 6; $numbers = range(0,9); shuffle($numbers); for($i = 0;$i < $amountOfDigits;$i++) $digits .= $numbers[$i]; echo $digits; //prints 217356
Если вы хотите это в аккуратной функции, вы можете создать что-то вроде этого:
function randomDigits($length){ $numbers = range(0,9); shuffle($numbers); for($i = 0;$i < $length;$i++) $digits .= $numbers[$i]; return $digits; }
function randomize($len = false) { $ints = array(); $len = $len ? $len : rand(2,9); if($len > 9) { trigger_error('Maximum length should not exceed 9'); return 0; } while(true) { $current = rand(0,9); if(!in_array($current,$ints)) { $ints[] = $current; } if(count($ints) == $len) { return implode($ints); } } } echo randomize(); //Numbers that are all unique with a random length. echo randomize(7); //Numbers that are all unique with a length of 7
вfunction randomize($len = false) { $ints = array(); $len = $len ? $len : rand(2,9); if($len > 9) { trigger_error('Maximum length should not exceed 9'); return 0; } while(true) { $current = rand(0,9); if(!in_array($current,$ints)) { $ints[] = $current; } if(count($ints) == $len) { return implode($ints); } } } echo randomize(); //Numbers that are all unique with a random length. echo randomize(7); //Numbers that are all unique with a length of 7
Что-то в этом направлении должно это сделать
<?php function genRandomString() { $length = 10; // set length of string $characters = '0123456789'; // for undefined string $string =""; for ($p = 0; $p < $length; $p++) { $string .= $characters[mt_rand(0, strlen($characters))]; } return $string; } $s = genRandomString(); //this is your random print var or function rand_string( $length ) { $chars = "0123456789"; $size = strlen( $chars ); for( $i = 0; $i < $length; $i++ ) { $str .= $chars[ rand( 0, $size – 1 ) ]; } return $str; } $rid= rand_string( 6 ); // 6 means length of generate string ?>
$result= ""; $numbers= "0123456789"; $length = 8; $i = 0; while ($i < $length) { $char = substr($numbers, mt_rand(0, strlen($numbers)-1), 1); //prevents duplicates if (!strstr($result, $char)) { $result .= $char; $i++; } }
Это должно сделать трюк. В $ numbers вы можете поместить любой символ, который вы хотите, например: я использовал это для генерации случайных паролей, товарных кодов и т. Д.
Наименьшее количество кода, которое я видел для чего-то вроде этого, было:
function random_num($n=5) { return rand(0, pow(10, $n)); }
Но я предполагаю, что для этого требуется больше обработки, чем эти другие методы.