Обратите внимание, что 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])
Сначала сделайте строку со всеми своими возможными символами:
$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
длина случайной строки.
Используйте таблица 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;
Посмотрите Больше:
Вы можете использовать следующий код, скопированный из этой статьи . Это похоже на существующие функции, за исключением того, что вы можете принудительно подсчитать специальные символы:
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);
}
Джереми великолепен. Если вы, как и я, не знаете, как реализовать 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 ().
Возможно, я что-то упустил, но вот способ использования функции uniqid () .