Есть ли способ генерировать случайное число, основанное на min и max?
Например, если min равно 1 и max 20, он должен генерировать любое число от 1 до 20, включая 1 и 20?
Есть ли способ генерировать случайное число, основанное на min и max?
Например, если min равно 1 и max 20, он должен генерировать любое число от 1 до 20, включая 1 и 20?
<?php
$min=1;
$max=20;
echo rand($min,$max);
?>
быстрее быстрее будет использовать mt_rand:
$min=1;
$max=20;
echo mt_rand($min,$max);
Источник: http://www.php.net/manual/en/function.mt-rand.php.
ПРИМЕЧАНИЕ.. Для работы вашего сервера должен быть включен модуль Math PHP. Если это не так, включите его хост, или вы должны использовать обычный (и более медленный) rand().
В новом PHP7 наконец появилась поддержка криптографически защищенных псевдослучайных целых чисел.
int random_int ( int $min , int $max )
random_int - генерирует криптографически безопасные псевдослучайные целые числа
который в основном делает предыдущие ответы устаревшими.
(rand() % ($max-$min)) + $min
или
rand ( $min , $max )
rand(1,20)
Документы для функции rand PHP находятся здесь:
http://php.net/manual/en/function.rand.php
Используйте функцию srand()
для установки начального значения генератора случайных чисел.
Я собрал ответы здесь и сделал его независимым от версии;
function generateRandom($min = 1, $max = 20) {
if (function_exists('random_int')):
return random_int($min, $max); // more secure
elseif (function_exists('mt_rand')):
return mt_rand($min, $max); // faster
endif;
return rand($min, $max); // old
}
Попробуйте этот. Он будет генерировать идентификатор согласно вашему желанию.
function id()
{
// add limit
$id_length = 20;
// add any character / digit
$alfa = "abcdefghijklmnopqrstuvwxyz1234567890";
$token = "";
for($i = 1; $i < $id_length; $i ++) {
// generate randomly within given character/digits
@$token .= $alfa[rand(1, strlen($alfa))];
}
return $token;
}