nixp.ru v3.0

22 мая 2017,
понедельник,
20:22:39 MSK

DevOps с компанией «Флант»
brunchik написал 12 января 2011 года в 16:34 (2601 просмотр) Ведет себя неопределенно; открыл 5 тем в форуме, оставил 22 комментария на сайте.

Необходимо сгенерировать числа в деопазоне от 1 до 13.Т.е. нужно что бы 0 не входил в этот деопазон.Если так int(rand(13)) то 0 входит, а нужно его исключить.Что то не могу найти как.В паскаль так 1..13.А в perl есть такое?

Дмитрий Шурупов

Недавно подобная «задача» на Python почему-то вызвала большие трудности у одного первокурсника…

int(rand(x-1)) + 1

brunchik

Спасибо.Сам не сообразил.Можно было и так int(rand(12)) + 1.Забыл я про 1.Делал как то то же поиск по определеного сивола а потом извлекал из строки то что следует за символом.Например rindex(’.',$string)+1

brunchik

Может заодно подскажишь как мне делать что бы к 1 2 3 4 5 6 7 8 9 прибовлять 0 спереди а у 10 11 12 ничего.Т.е. что бы число стало двузначным.

И почему то использую функцию length так она мне все время показывает 1 да же если число 333.

 

Дмитрий Шурупов

Самый тупой способ с 0 в начале:

$str = '0'.$str if (length($str) < 2); 


:-)

Проблем с length не вижу:

$ perl -e 'print length(333)."\n";'
3 
brunchik

Я сейчас тоже не вижу проблему.У меня перл частенько клинит.Напишу код полностью рабочий.Положу на локальный сервер.И получаю ошибку.Перепешу все точь в точь заного и все ок.

brunchik

А что бы и еще двузначные выводило нужно так

{

$m=int(rand(12)) + 1;

if (length($m) < 2)

{

print «0$m\n»

}

else

{

print «$m\n»

}