Геннератор случайных чисел $RANDOM (Можно ли ...)
Модераторы: /dev/random, Модераторы разделов
-
- Сообщения: 497
- ОС: Slackware 12.2, Archlinux
Геннератор случайных чисел $RANDOM
Mожно ли через $RANDOM генерировать числа в "диапазоне", к примеру от 0 до 1300 ?
Есть файл со строками начинающимися от 0 до 1300.
Нужно в хаотичном порядке грепать по одному.
Собственно вот и решил что моно через $RANDOM генерировать.
Может есть еще какие варианты? (если через $RANDOM это не возможно.
Есть файл со строками начинающимися от 0 до 1300.
Нужно в хаотичном порядке грепать по одному.
Собственно вот и решил что моно через $RANDOM генерировать.
Может есть еще какие варианты? (если через $RANDOM это не возможно.
Сыграем?
[ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo "Жив"
[ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo "Жив"
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Геннератор случайных чисел $RANDOM
echo $((RANDOM%1300))
-
- Сообщения: 497
- ОС: Slackware 12.2, Archlinux
Re: Геннератор случайных чисел $RANDOM
Спасибо...
Как то даже не подумал о такой конструкции.
Как то даже не подумал о такой конструкции.
Сыграем?
[ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo "Жив"
[ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo "Жив"
-
- Сообщения: 497
- ОС: Slackware 12.2, Archlinux
Re: Геннератор случайных чисел $RANDOM
Еще момент:
Вот таки написал скрипт, но не пойму почему он дает "осечку"
Вот что происходит.
Как такое может быть?
Вот таки написал скрипт, но не пойму почему он дает "осечку"
Код: Выделить всё
#!/bin/bash
S=$(/bin/cat -n /home/Multimedia/Slovar/computer-eng/computer-eng.uvs | sed 's/^[ \t]*//' > /tmp/S)
R=$((RANDOM%3338))
RESULT=$(cat /tmp/S | grep $R | sed "s/^[ \t]*//")
echo $RESULT | sed "s/$R//"
Вот что происходит.
Код: Выделить всё
farex@dhcppc0 ~/bin$ ang_osd
On mouse click при нажатии на мышку
farex@dhcppc0 ~/bin$ ang_osd
2825 Stop остановить(ся), прекратить(ся); конечный; остановкаьтимедиа-устройствами
farex@dhcppc0 ~/bin$ ang_osd
Exiting выход; выходящий; выходя
farex@dhcppc0 ~/bin$
Как такое может быть?
Сыграем?
[ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo "Жив"
[ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo "Жив"
-
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
Re: Геннератор случайных чисел $RANDOM
S=$(/bin/cat -n /home/Multimedia/Slovar/computer-eng/computer-eng.uvs | sed 's/^[ \t]*//' > /tmp/S)
Зачем такое архитектурное излишество - загонять командную конструкцию в переменную, которая потом все равно не используется?
Попробуйте убрать лишнее:
Код: Выделить всё
/bin/cat -n /home/Multimedia/Slovar/computer-eng/computer-eng.uvs | sed 's/^[ \t]*//' > /tmp/S
Еще один образчик эклектики:
RESULT=$(cat /tmp/S | grep $R | sed "s/^[ \t]*//")
echo $RESULT | sed "s/$R//"
Это также поддается упрощению:
Код: Выделить всё
cat /tmp/S | grep $R | sed "s/^[ \t]*//; s/$R//"
-
- Сообщения: 497
- ОС: Slackware 12.2, Archlinux
Re: Геннератор случайных чисел $RANDOM
Да я пробывал..
Тогда
Выводит весь список., от 0 до 3338
По этому и заюзал /tmp
Тогда
Код: Выделить всё
echo $S | grep $R
Выводит весь список., от 0 до 3338
По этому и заюзал /tmp
Сыграем?
[ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo "Жив"
[ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo "Жив"
-
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
Re: Геннератор случайных чисел $RANDOM
Да и вообще весь ваш скрипт так и стремится свернуться в одну строчку. :)
Код: Выделить всё
R=$((RANDOM%3338)); /bin/cat -n /home/Multimedia/Slovar/computer-eng/computer-eng.uvs | sed 's/^[ \t]*//' | grep "$R" | sed "s/$R//"
-
- Сообщения: 497
- ОС: Slackware 12.2, Archlinux
Re: Геннератор случайных чисел $RANDOM
Конечно спс...
Но таки не обрезает цифры.
Зы: Может словарик касячит.
Но таки не обрезает цифры.
Код: Выделить всё
farex@dhcppc0 ~$ R=$((RANDOM%3338)); /bin/cat -n /home/Multimedia/Slovar/computer-eng/computer-eng.uvs | sed 's/^[ \t]*//' | grep "$R" | sed "s/$R//"
Directory service(s) служба каталогов
1 Mobile мобильный, передвижной, подвижный
2 Supported поддержал; поддержанный
farex@dhcppc0 ~$
Зы: Может словарик касячит.
Сыграем?
[ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo "Жив"
[ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo "Жив"
-
- Сообщения: 497
- ОС: Slackware 12.2, Archlinux
Re: Геннератор случайных чисел $RANDOM
Есть другой словарик.
Но он выглядит так.
Слово на английском
Перевод
То есть в две строки., и так 3000 слов.
Нуно думать как объединить 1строку со второй, 3строку с четвертой итд.
-----------------------------
Попробывал со вторым словарем., результат такой же.
Видимо все дело именно в RANDOM
Но он выглядит так.
Слово на английском
Перевод
То есть в две строки., и так 3000 слов.
Нуно думать как объединить 1строку со второй, 3строку с четвертой итд.
-----------------------------
Попробывал со вторым словарем., результат такой же.
Видимо все дело именно в RANDOM
Сыграем?
[ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo "Жив"
[ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo "Жив"
-
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
Re: Геннератор случайных чисел $RANDOM
RANDOM ни при чем. Попробуйте так:
Получилось быстренько и грязненько, но работает. Думаю, те, кто использует sed чаще меня, этот пример еще улучшат.
Код: Выделить всё
R=$((RANDOM%3338)); cat -n file | sed 's/^\s*//' | sed -n "/^$R\s/p" | sed 's/\s\{1,\}/ /g' | cut -d ' ' -f 2-
Получилось быстренько и грязненько, но работает. Думаю, те, кто использует sed чаще меня, этот пример еще улучшат.
Спасибо сказали:
-
- Сообщения: 497
- ОС: Slackware 12.2, Archlinux
Re: Геннератор случайных чисел $RANDOM
Действительно работает.
Спасибо allez за исследавания.
Зы: А способ хорош, я бы и не стал не чего улучшать.
Сыграем?
[ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo "Жив"
[ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo "Жив"
-
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: Геннератор случайных чисел $RANDOM
Всего лишь вывести строку по случайному номеру? Зачем же здесь sed?
Код: Выделить всё
head -$(( $RANDOM%$(wc -l <$file) )) $file | tail -1
Не сочтите за буквоедство, но это ведь tr -s ' ', если я правильно понял?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Геннератор случайных чисел $RANDOM
само изначальное описание задачи ну прямо таки напрашивается на fortune.
1. надо расставить % через каждые две строчки в исходном файле:
$ sed '2~2s/$/\n%/' исходный_файл > файл_с_фортунками
2. надо построить индекс к этому файлу (будет сгенерирован файл_с_фортунками.dat, небоходимый для работы fortune):
$ strfile файл_с_фортунками
3. запускаем:
$ fortune файл_с_фортунками
4. профит.
1. надо расставить % через каждые две строчки в исходном файле:
$ sed '2~2s/$/\n%/' исходный_файл > файл_с_фортунками
2. надо построить индекс к этому файлу (будет сгенерирован файл_с_фортунками.dat, небоходимый для работы fortune):
$ strfile файл_с_фортунками
3. запускаем:
$ fortune файл_с_фортунками
4. профит.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Геннератор случайных чисел $RANDOM
???
Код: Выделить всё
sed 'N;s/\n/ /'
что может быть проще?
+1
ну... ага, вроде.
или sed -r 's/ +/ /'
можно и так...
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Геннератор случайных чисел $RANDOM
sash-kan писал(а): ↑25.01.2010 13:40само изначальное описание задачи ну прямо таки напрашивается на fortune.
1. надо расставить % через каждые две строчки в исходном файле:
$ sed '2~2s/$/\n%/' исходный_файл > файл_с_фортунками
2. надо построить индекс к этому файлу (будет сгенерирован файл_с_фортунками.dat, небоходимый для работы fortune):
$ strfile файл_с_фортунками
3. запускаем:
$ fortune файл_с_фортунками
4. профит.
кстати, для облегчения процедуры нарисовал мэйкфайл.
ориентируется он на то, что исходные файлы имеют суффикс «.txt».
после прохода make на этот каталог можно натравливать fortune.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог