PHP случайное число - PullRequest
3 голосов
/ 29 июня 2010

Я хочу сгенерировать случайное число в PHP, где сами цифры не должны повторяться в этом числе.Это возможно?Можете ли вы вставить образец кода здесь?Например: 674930, 145289. [то есть одна и та же цифра не должна появляться] Спасибо

Ответы [ 5 ]

13 голосов
/ 29 июня 2010

Вот хороший способ сделать это:

$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;
}
3 голосов
/ 29 июня 2010
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

Что-то в этом роде должно это сделать

1 голос
/ 03 марта 2017
<?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


?>
0 голосов
/ 24 июля 2012

Наименьшее количество кода, которое я видел для чего-то подобного, было:

function random_num($n=5)
{
    return rand(0, pow(10, $n));
}

Но я предполагаю, что для этого требуется больше обработки, чем для этих других методов.

0 голосов
/ 29 июня 2010
$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++;
    }
}

Это должно сработать. В числах $ вы можете указать любой символ, который вам нужен, например: я использовал его для генерации случайных паролей, кодов продуктов и т. Д.

...