LINUX.ORG.RU

[PERL] От перестановки множителей произведение не меняется?

 


0

0

Если функция rand, вызванная без параметров генерит случайное число в интервале от 0 до 1, то логично предположить, что 10*rand возвращает число в диапазоне от 0 до 10. Следующий код это действительно подтверждает:

perl -le 'print 10*rand'

Вроде бы умножение обладает переместительным свойством, но почему тогда скрипт

perl -le 'print rand*10'

всегда выдает число в интервале от 0 до 1, как будто бы умножения на 10 и не было?

с самого начала было ясно, что это какой-то закидон синтаксиса перла

$ perl -We 'print rand*10'
Argument "*main::10" isn't numeric in rand at -e line 1.
0.00627396216532716$ perl -We 'print rand()*10'
6.85992593717859$ 

если писать привычно rand() то все хорошо

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от akinator

Вот оно «отсутствие искусственных ограничений», которым так хвалятся любители перла. А потом они сами свои программы понять не могут.

Перл строку

perl -le 'print rand*10'
понимает как
perl -le 'print rand(*10)'

anonymous
()

perl -we «use strict; ...»
perl -we «use strict; ...»
perl -we «use strict; ...»

lodin ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.