Генерация (псевдо) случайных алфавитно-цифровых строк

Обратите внимание, что numpy.random.rand позволяет генерировать несколько выборок из равномерного распределения при одном вызове:

>>> np.random.rand(5)
array([ 0.69093485,  0.24590705,  0.02013208,  0.06921124,  0.73329277])

Он также позволяет создавать образцы в заданной форме:

>>> np.random.rand(3,2)
array([[ 0.14022471,  0.96360618], 
       [ 0.37601032,  0.25528411], 
       [ 0.49313049,  0.94909878]])

Как вы сказали, равномерно распределенные случайные числа между [-1, 1) могут быть сгенерированы с помощью:

>>> 2 * np.random.rand(5) - 1
array([ 0.86704088, -0.65406928, -0.02814943,  0.74080741, -0.14416581])

82
задан MrValdez 5 October 2008 в 06:18
поделиться

5 ответов

Сначала сделайте строку со всеми своими возможными символами:

 $characters = 'abcdefghijklmnopqrstuvwxyz0123456789';

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

Затем в цикле, выбирают случайное число и используют его в качестве индекса к эти $characters строка, чтобы получить случайный символ и добавить его к Вашей строке:

 $string = '';
 $max = strlen($characters) - 1;
 for ($i = 0; $i < $random_string_length; $i++) {
      $string .= $characters[mt_rand(0, $max)];
 }

$random_string_length длина случайной строки.

163
ответ дан BadHorsie 5 November 2019 в 16:52
поделиться

Используйте таблица ASCII для выбора диапазона букв, где: $range_start, $range_end является значением из десятичного столбца в таблице ASCII.

я нахожу, что этот метод более хорош сравненный к методу, описал , где диапазон символов конкретно определяется в другой строке.

// range is numbers (48) through capital and lower case letters (122)
$range_start = 48;
$range_end   = 122;
$random_string = "";
$random_string_length = 10;

for ($i = 0; $i < $random_string_length; $i++) {
  $ascii_no = round( mt_rand( $range_start , $range_end ) ); // generates a number within the range
  // finds the character represented by $ascii_no and adds it to the random string
  // study **chr** function for a better understanding
  $random_string .= chr( $ascii_no );
}

echo $random_string;

Посмотрите Больше:

4
ответ дан Community 5 November 2019 в 16:52
поделиться

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

function random_string()
{
    // 8 characters: 7 lower-case alphabets and 1 digit
    $character_set_array = array();
    $character_set_array[] = array('count' => 7, 'characters' => 'abcdefghijklmnopqrstuvwxyz');
    $character_set_array[] = array('count' => 1, 'characters' => '0123456789');
    $temp_array = array();
    foreach ($character_set_array as $character_set) {
        for ($i = 0; $i < $character_set['count']; $i++) {
            $temp_array[] = $character_set['characters'][rand(0, strlen($character_set['characters']) - 1)];
        }
    }
    shuffle($temp_array);
    return implode('', $temp_array);
}
1
ответ дан 24 November 2019 в 09:06
поделиться

Джереми великолепен. Если вы, как и я, не знаете, как реализовать range (), вы можете увидеть мою версию с помощью range ().

<?php
$character_array = array_merge(range('a', 'z'), range(0, 9));
$string = "";
    for($i = 0; $i < 6; $i++) {
        $string .= $character_array[rand(0, (count($character_array) - 1))];
    }
echo $string;
?>

Он делает то же самое, что и Джереми, но использует объединенные массивы, где он использует строку, и использует count (), где он использует strlen ().

0
ответ дан 24 November 2019 в 09:06
поделиться

Возможно, я что-то упустил, но вот способ использования функции uniqid () .

2
ответ дан 24 November 2019 в 09:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: