Генератор случайных чисел

Проблема

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

Решение

Воспользуйтесь функцией 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



2013-09-10 17:05:19

Proverte kod v komentariyah gde pro list tam oshibki detskie




Оставить комментарий:
Ваше Имя:
Email:
Антибот: *  
Ваш комментарий: