Получение случайного числа 0…255 в bash
Понадобилось получить случайное число в шеле из устройства /dev/urandom, написал небольшую функцию, сохраню у себя, чтобы не потерялась.
getrand() {
head -c1 /dev/urandom | hexdump -d | sed -E '1!d;s/.+ +0+//'
}
Ещё вариант придумался (но необходим openssl):
getrand() {
openssl rand 1 -hex | xargs -I. printf "%d" 0x.
}
В bash еще есть переменная $RANDOM, но берется она, вроде, из /dev/random
Можно вот так сделать echo «$RANDOM%256» | bc
Комментарий для doochik.ya.ru:
Да, я знаю о её существовании:
http://bolknote.ru/all/3831/
http://bolknote.ru/all/3410/
Вот так проще: echo $(( $RANDOM*255/32768 ))
Но мне нужны были именно случайные числа, а про $RANDOM написано ( http://tldp.org/LDP/abs/html/randomvar.html ):
Комментарий для Евгения Степанищева:
Случайных чисел не добьёшься, компьютер жестко ограниен логикой.
Комментарий для Вася:
Почитайте как устройство /dev/random работает: http://ru.wikipedia.org/wiki//dev/random