Получение случайного числа 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.
}
24 января 2013 08:24

Дучик (doochik.ya.ru)
24 января 2013, 10:43

В bash еще есть переменная $RANDOM, но берется она, вроде, из /dev/random
Можно вот так сделать echo "$RANDOM%256" | bc

bolk (bolknote.ru)
24 января 2013, 10:47, ответ предназначен Дучик (doochik.ya.ru):

Да, я знаю о её существовании:
http://bolknote.ru/2013/01/10/~3831/
http://bolknote.ru/2011/09/18/~3410/

Вот так проще: echo $(( $RANDOM*255/32768 ))

Но мне нужны были именно случайные числа, а про $RANDOM написано (http://tldp.org/LDP/abs/html/randomvar.html):
$RANDOM is an internal Bash function (not a constant) that returns a pseudorandom integer in the range 0 - 32767. It should not be used to generate an encryption key.

Вася (инкогнито)
10 февраля 2013, 06:07, ответ предназначен bolk (bolknote.ru):

Случайных чисел не добьёшься, компьютер жестко ограниен логикой.

bolk (bolknote.ru)
10 февраля 2013, 09:50, ответ предназначен Васе

Почитайте как устройство /dev/random работает: http://ru.wikipedia.org/wiki//dev/random

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)