Генератор случайных чисел
Проблема
Требуется генерировать случайные числа в заданном интервале — например, чтобы выбрать
произвольный элемент массива, имитировать бросок кубика в игре или сгенерировать случайный пароль.
Решение
Воспользуйтесь функцией Perl rand.
$random = int(rand( $Y - $X + 1 ) ) + $X;
Комментарий
Следующий фрагмент генерирует и выводит случайное число в интервале от 25 до 75 включительно:
$random = int(rand(51)) + 25;
print "$random\n";
Функция rand возвращает дробное число от 0 (включительно) до заданного аргумента (не включается).
Мы вызываем ее с аргументом 51, чтобы случайное число было больше либо равно 0, но никогда не было бы
равно 51 и выше. Затем от сгенерированного числа берется целая часть, что дает число от 0 до 50
включительно (функция int превращает 50,9999... в 50). К полученному числу прибавляется 25, что дает
в результате число от 25 до 75 включительно.
Одно из распространенных применений этой методики — выбор случайного элемента массива:
$elt = $array[rand @array];
Также она часто используется для генерации случайного пароля из заданной последовательности символов:
@chars = ( "А" .. "Z", "а" .. "z", 0 .. 9, qw(% ! @ $ % ^ & *) );
$password = join("", @chars[ map{ rand @chars }(1 .. 8) ]);
Мы генерируем восемь случайных индексов @chars с помощью функции
map, извлекаем соответствующие
символы в виде среза и объединяем их в случайный пароль. Впрочем, в действительности пароль
получается не совсем случайным — безопасность вашей системы зависит от стартового значения (seed)
генератора случайных чисел на момент запуска программы.
См. такжеОписание функций
int,
rand и
join
Proverte kod v komentariyah gde pro list tam oshibki detskie
Оставить комментарий:
|
|