Подтвердить что ты не робот

Создание случайных чисел и букв

Можно ли запросить определенный код о том, как создавать случайные буквы и цифры одним словом. Я знаю, что существует функция PHP rand(), но я не знаю, применима ли она также к письмам. Там также функция mt_rand(), но я не знаю, как она работает. Я планирую генерировать слово, подобное этому:

$randomcode = re784dfg7ert7;

У вас, ребята, есть простой код на этом? Спасибо заранее!

4b9b3361

Ответ 1

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

function assign_rand_value($num) {

    // accepts 1 - 36
    switch($num) {
        case "1"  : $rand_value = "a"; break;
        case "2"  : $rand_value = "b"; break;
        case "3"  : $rand_value = "c"; break;
        case "4"  : $rand_value = "d"; break;
        case "5"  : $rand_value = "e"; break;
        case "6"  : $rand_value = "f"; break;
        case "7"  : $rand_value = "g"; break;
        case "8"  : $rand_value = "h"; break;
        case "9"  : $rand_value = "i"; break;
        case "10" : $rand_value = "j"; break;
        case "11" : $rand_value = "k"; break;
        case "12" : $rand_value = "l"; break;
        case "13" : $rand_value = "m"; break;
        case "14" : $rand_value = "n"; break;
        case "15" : $rand_value = "o"; break;
        case "16" : $rand_value = "p"; break;
        case "17" : $rand_value = "q"; break;
        case "18" : $rand_value = "r"; break;
        case "19" : $rand_value = "s"; break;
        case "20" : $rand_value = "t"; break;
        case "21" : $rand_value = "u"; break;
        case "22" : $rand_value = "v"; break;
        case "23" : $rand_value = "w"; break;
        case "24" : $rand_value = "x"; break;
        case "25" : $rand_value = "y"; break;
        case "26" : $rand_value = "z"; break;
        case "27" : $rand_value = "0"; break;
        case "28" : $rand_value = "1"; break;
        case "29" : $rand_value = "2"; break;
        case "30" : $rand_value = "3"; break;
        case "31" : $rand_value = "4"; break;
        case "32" : $rand_value = "5"; break;
        case "33" : $rand_value = "6"; break;
        case "34" : $rand_value = "7"; break;
        case "35" : $rand_value = "8"; break;
        case "36" : $rand_value = "9"; break;
    }
    return $rand_value;
}

function get_rand_alphanumeric($length) {
    if ($length>0) {
        $rand_id="";
        for ($i=1; $i<=$length; $i++) {
            mt_srand((double)microtime() * 1000000);
            $num = mt_rand(1,36);
            $rand_id .= assign_rand_value($num);
        }
    }
    return $rand_id;
}

function get_rand_numbers($length) {
    if ($length>0) {
        $rand_id="";
        for($i=1; $i<=$length; $i++) {
            mt_srand((double)microtime() * 1000000);
            $num = mt_rand(27,36);
            $rand_id .= assign_rand_value($num);
        }
    }
    return $rand_id;
}

function get_rand_letters($length) {
    if ($length>0) {
        $rand_id="";
        for($i=1; $i<=$length; $i++) {
            mt_srand((double)microtime() * 1000000);
            $num = mt_rand(1,26);
            $rand_id .= assign_rand_value($num);
        }
    }
    return $rand_id;
}

ПРИМЕНЕНИЕ:

В основном у меня есть основная функция с массивом, затем я вызываю вторичные функции для построения моей строки на основе параметра длины:

Письма:

$str = get_rand_letters(8); // Only Letters

Числа:

$str = get_rand_numbers(8); // Only Numbers

Буквенно-цифровой:

$str = get_rand_alphanumeric(8); // Numbers and Letters

На этот вопрос отвечает Kerrek SB, но это может помочь кому-то найти более обширный и гибкий способ.

Ответ 2

<?php
echo substr(sha1(mt_rand()),17,6); //To Generate Random Numbers with Letters.
?>

Ответ 3

Шаг 1: Создайте алфавит, $alph = "0123456789abcde...";.

Шаг 2: Создайте случайное число, $n = rand(0, ALPHSIZE-1); или используйте mt_rand().

Шаг 3. Получите соответствующий индекс в алфавите: $alph[n];

Промойте и повторите шаги 2 и 3 столько раз, сколько вам нужно.

Если вам нужны сильные статистические свойства (например, равномерность), вы должны работать немного сложнее со случайным числом, но это должно заставить вас начать. (Я думаю, что статистические свойства этого должны быть достаточными.)


ОК, также может быть написано:

$alph = "012...";
function make_random_string($N)
{
  $s = "";
  for ($i = 0; $i != $N; ++$i)
    s .= $alph[mt_rand(0, ALPHSIZE - 1)];
  return $s;
}

И вот версия, которая берет пользовательский алфавит:

function make_random_custom_string($N, $alphabet)
{
  $s = "";
  for ($i = 0; $i != $N; ++$i)
    s .= $alphabet[mt_rand(0, strlen($alphabet) - 1)];
  return $s;
}

Пример: 10 случайных нечетных цифр: make_random_custom_string(10, "13579");

Ответ 4

Используйте uniqid

$desired_length = 10; //or whatever length you want
$unique = uniqid();

$your_random_word = substr($unique, 0, $desired_length);

Ответ 5

Самый простой способ сделать это с полным контролем:

<?php
$str = 'abcdefghijklmnopqrstuvwxyz01234567891011121314151617181920212223242526';


$shuffled = str_shuffle($str);

$shuffled = substr($shuffled,1,30);

echo $shuffled;
?>

Измените $str в соответствии с вашими потребностями. Я использовал алфавиты от a до z и числовые значения 1-26.

Ответ 6

Это можно сделать следующим образом:

function RandomCode($length = 10)
{
    $code = '';
    $total = 0;

    do
    {
        if (rand(0, 1) == 0)
        {
            $code.= chr(rand(97, 122)); // ASCII code from **a(97)** to **z(122)**
        }
        else
        {
            $code.= rand(0, 9); // Numbers!!
        }
        $total++;
    } while ($total < $length);

    return $code;
}

Ответ 7

Попробуй, это сработало для меня.

$numLenth = 35;

function make_seed_Token() {
  list($usec, $sec) = explode(' ', microtime());
  return (float) $sec + ((float) $usec * 100000);
}

srand(make_seed_Token());

$numSeed = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$getNumber = "";
for($i = 0; $i < $numLenth; $i ++) {
 $getNumber .= $numSeed[rand(0, strlen($numSeed))];

}

echo $getNumber;

Ответ 8

Как насчет этого простого кода. Это сгенерирует 10 символов, вы можете ограничить количество символов, изменив ограничения (0,10)

$str = substr(md5(time()), 0, 10);
echo $str; //7aca159655

Ответ 9

это легко

echo strtr(substr(str_shuffle('abcdefghijklmnopqrstuvwxyz0123456789.11.12.13.14.15.16.17.18.19.20'),1,20),array("."=>""));

Ответ 10

Я собрал класс PHP для генерации случайных чисел и строк PHPRandomValue,

Он использует "mcrypt_create_iv (4, MCRYPT_DEV_URANDOM)" для генерации случайных чисел и значений. Я сделал это, работая над криптопроектом, потому что мне нужен безопасный генератор случайных значений, а mt_rand() не соответствует этому требованию. Здесь пример использования

$randomValue = new RandomValue;

$randomValue->randomNumber(): = -3880998

$randomValue->randomNumberBetween(1,10): = 2

$randomValue->randomTextString(): = CfCkKDHRgUULdGWcSqP4

$randomValue->randomTextString(10):  = LorPIxaeEY

$randomValue->randomKey(): = C7al8tX9.gqYLf2ImVt/!$NOY79T5sNCT/6Q.$!.6Gf/Q5zpa3

$randomValue->randomKey(10):  = RDV.dc6Ai/

Ответ 11

Это был простой способ для меня - он генерирует строку из 15 символов -

$alph = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        $code='';
        $i=0;
        while($i<15){
            $position=rand(0,35);
            $code=$code.substr($alph,$position,1);
            $i++;
        }

Ответ 12

// A string with random letters and numbers. A-Z, a-z, 0-9

function rand_string($length = 16) {

    $string = '';

    for ($i = 0; $i < $length; $i++) {

        $die = mt_rand(1, 3);

        switch ($die) {

            case 1:
                $rnd = mt_rand(48, 57);
                break;

            case 2:
                $rnd = mt_rand(65, 90);
                break;

            case 3:
                $rnd = mt_rand(97, 122);
                break;
        }

        $string .= chr($rnd);
    }

    return $string;
}

Ответ 13

echo bin2hex(openssl_random_pseudo_bytes(12));

Ответ 14

function randText($len=4){
    $str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    for($i=0;$i<$len;$i++){
        $txt.=substr($str, rand(0, strlen($str)), 1);   
    }
return $txt;
}

чтобы использовать просто введите:

$yourVar = randText(10);  // to get 10char long text

Ответ 15

Это создаст случайную строку с альфа-номером на основе переменных символов:

function createRandomCode() 
{     
    $chars = "abcdefghijkmnopqrstuvwxyz023456789";     
    srand((double) microtime() * 1000000);     

    $i = 0;     
    $pass = '';  

    while ($i <= 7) 
    {         
        $num = rand() % 33;         
        $tmp = substr($chars, $num, 1);         
        $pass = $pass . $tmp;         
        $i++;     
    }    

    return $pass; 
}

Используйте эту функцию как $random = createRandomCode();