получить случайное число из шаблона с уникальной цифрой - PullRequest
1 голос
/ 05 августа 2011

Допустим, если шаблон 123456.

В php можно получить число длиной шесть цифр, и цифра не должна повторяться более одного раза в сгенерированном №.

456136 -- all digit are unique right

56136 -- wrong digit 4 is missing
456436 -- wrong digit 4 repeats

Ответы [ 4 ]

5 голосов
/ 05 августа 2011

Если вам нужно 1-6 цифр

str_shuffle('123456');

Если вам нужно 1-9 цифр

substr(str_shuffle('123456789'),0,6);

Вручную

1 голос
/ 05 августа 2011

Вы могли бы начать с разделения вашего шаблона на массив цифр, используя str_split():

$pattern = '123456';
$digits = str_split($pattern);


Затем вы можете использовать shuffle() для этого массива, поэтому его элементы расположены в случайном порядке:

shuffle($digits);


И, наконец, вы можете implode(), чтобы рандомизировать массив обратно в строку:

$result = implode('', $digits);


Сброс содержимого этой переменной:

var_dump($result);


Вы получите результаты, подобные этим:

string(6) "645132"
string(6) "462513"
string(6) "542316"

Всегда шесть цифр, всегда указанные вами цифры; и никто не использовал больше раз, чем указано в шаблоне.

1 голос
/ 05 августа 2011

Это должно дать вам 0 повторений:

$random = array();
while(count($random) != 6)
{
    $random[] = rand(0, 9);
    $random = array_unique($random);
}
$random = implode('', $random);
0 голосов
/ 05 августа 2011

Вы можете попробовать это:

$nums = array();

while(count($nums)<=6){
    $rand = rand(0,9);
    if(!in_array($rand, $nums)){
         $nums[] = $rand;
    }
}

echo implode('',$nums);

Демо:

1-й прогон: http://codepad.org/31AKqeYz
2-й прогон: http://codepad.org/ckuUQCP3

...