Поиск…


замечания

Документация для функции rand () perl: http://perldoc.perl.org/functions/rand.html

Создайте случайное число от 0 до 100

Передайте верхний предел в качестве аргумента функции rand ().

Входные данные:

my $upper_limit = 100;
my $random = rand($upper_limit);

print $random . "\n";

Выход:

Случайное число с плавающей запятой, например ...

45.8733038119139

Генерировать случайное целое число от 0 до 9

Передайте произвольное число с плавающей запятой как int.

Входные данные:

my $range = 10;

# create random integer as low as 0 and as high as 9
my $random = int(rand($range));   # max value is up to but not equal to $range

print $random . "\n";

Выход:

Случайное целое число, например ...

0

См. Также perldoc для rand .

Доступ к элементу массива случайным образом

my @letters = ( 'a' .. 'z' );                # English ascii-bet

print $letters[ rand @letters ] for 1 .. 5;  # prints 5 letters at random

Как это устроено

  • rand EXPR ожидает скалярное значение, поэтому @letters вычисляется в скалярном контексте
  • Массив в скалярном контексте возвращает количество содержащихся в нем элементов (26 в этом случае)
  • rand 26 возвращает случайное дробное число в интервале 0 ≤ VALUE < 26 . (Это никогда не может быть 26 )
  • Индексы массива всегда целые числа, поэтому $letters[rand @letters]$letters[int rand @letters]
  • Массивы Perl индексируются с нулевым значением, поэтому $array[rand @array] возвращает $array[0] , $array[$#array] или элемент между

(Тот же принцип применяется к хэшам)

my %colors = ( red   => 0xFF0000,
               green => 0x00FF00,
               blue  => 0x0000FF,
             );

print ( values %colors )[rand keys %colors];


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow