Como o macOS tem /dev/urandom
, você deve ser capaz de fazer:
od -An -vtd8 -N8 < /dev/urandom
No entanto, de acordo com aqueles que tentaram em um sistema macOS real (veja os comentários), ele não funciona lá. Como o macOS deve ser um sistema Unix certificado, isso significa que é um bug, pois o POSIX especifica claramente o comportamento desse comando . A única coisa que POSIX deixa de especificar (implementação definida) é a ordem de bytes (que não nos importamos aqui, pois são todos os bytes aleatórios).
Como alternativa, você pode usar ksh
/ bash
/ zsh
$RANDOM
aqui. Mesmo que o macOS ' sh
seja baseado em bash
hoje em dia, seria melhor mudar para bash / zsh (ou ksh
implementações diferentes de mksh
cuja utilização aritmética de 32bits) como $RANDOM
não é sh
feature, portanto, pode não funcionar na versão futura do macOS se eles decidirem mudar para um shell diferente.
m=32768 # $RANDOM span
long=$((RANDOM+RANDOM*m+RANDOM*m*m+RANDOM*m*m*m+RANDOM*m*m*m*m))
ou:
long=$((RANDOM|(RANDOM<<15)|(RANDOM<<30)|(RANDOM<<45)|(RANDOM<<60)))
São 5 * 15 == 75 bits, mas serão truncados para 64 bits pelo shell.
Na caixa de ferramentas POSIX, a maneira de gerar números aleatórios é com awk
' rand()
, então você pode fazer:
awk 'BEGIN{srand(); printf "%.20g\n", rand() * (2^64) - (2^63)}'
Tenha em mente que com muitas
awk
implementações (aquelas que baseiam a
srand()
semente no resultado de
time(3)
), você obterá a mesma saída se você executá-lo duas vezes no mesmo segundo.
Além disso, devido à maneira como os números de ponto flutuante são representados, eu esperaria que houvesse alguns números de 64 bits (como 2 63 -1) que ele nunca produziria.