Gerar um número aleatório em Bash

Gerar um número aleatório em Bash
O número que é alterado em cada execução do script é chamado de número aleatório e é imprevisível. Os números aleatórios são usados ​​na programação para vários fins, como testes de dados, geração de bilhetes de loteria, gerando uma senha, etc. O número inteiro ou o número flutuante pode ser usado para gerar um número aleatório em bash. O número aleatório de um intervalo específico ou um tamanho pode ser gerado usando um script bash. Diferentes maneiras de gerar números aleatórios em Bash foram mostrados neste tutorial.

Uso de gerador aleatório:

O número aleatório ou um intervalo de números aleatórios podem ser gerados usando a variável de $ aleatória. Ele gera um número aleatório entre 0 e 32767 por padrão. Mas você pode definir o intervalo de números para gerar números aleatórios dividindo o valor de $ aleatórios com um valor específico. Diferentes usos da variável aleatória $ para gerar números aleatórios são mostrados na próxima parte do tutorial.

Geração de números aleatórios usando $ Random Variable:

As maneiras de gerar o número aleatório no terminal e executar um arquivo de script são mostradas aqui.

A. Gerar números aleatórios do terminal

Execute o seguinte comando para gerar um número aleatório dentro do intervalo de 0 a 32767.

$ echo $ aleatório

Você pode gerar um número aleatório de um intervalo específico dividindo a variável Random $ com um valor específico e obtendo o valor do restante. Execute o seguinte comando para gerar um número aleatório dentro da faixa de 1 a 50. Aqui, os primeiros suportes duplos com $ foram usados.

$ echo $ (($ aleatória % 50 + 1))

Execute o seguinte comando para gerar um número aleatório dentro da faixa de 10 a 40. Aqui, o terceiro suporte com $ foi usado.

$ echo $ [$ aleatória % 40 + 10]

B. Gerar números aleatórios usando o script

Crie um arquivo bash com o seguinte script para gerar um número aleatório do intervalo específico, onde os valores mínimo e máximo de intervalo serão obtidos do usuário. Uma mensagem de erro será exibida se o valor máximo tomado for menor que o valor mínimo. Se a diferença entre o máximo e o valor mínimo for 1, outra mensagem de erro será exibida. Um número aleatório será gerado em cada execução deste script se os valores mínimos e máximos válidos serão tomados como entrada.

#!/BIN/BASH
# Gere um intervalo de base aleatoriamente definido pelo usuário
#Tome o valor inferior e o valor superior do usuário
eco "Digite o valor mínimo:"
Leia o mínimo
eco "Digite o valor máximo:"
Leia o máximo
#Verifique os valores tomados são válidos
se [[$ maximum < $minimum ]]; then
eco "o valor máximo não pode ser menor que o valor mínimo"
saída 1
fi
#Come a diferença entre os números
diff = $ (($ maximum- $ mínimo))
#Verifique o valor da diferença
se [[$ diff == 1]]; então
eco "a faixa de números deve ser superior a 1"
saída 1
fi
#Genere o número aleatório
RandomNumber = $ (($ Mínimo + $ Random % $ MAXIMUM))
#Print O número gerado
eco "O número aleatório gerado é: $ RandomNumber"

A saída a seguir aparecerá se o script for executado várias vezes. Aqui, o script acima foi executado três vezes. A mensagem de erro foi impressa para as duas primeiras execuções para entrada inválida, e um número aleatório foi gerado para a última execução.

Geração de números aleatórios usando o comando 'shuf':

Usar o comando 'shuf' é outra maneira de gerar o número aleatório de um intervalo específico. As maneiras de gerar um número aleatório do terminal e usar um script foram mostradas neste tutorial.

A. Gerar números aleatórios do terminal

Execute o seguinte comando para gerar um número aleatório entre 0 e 50 usando o comando 'shuf'.

$ shuf -i 0-50 -n1

De acordo com a saída a seguir, o comando acima foi executado três vezes e três números aleatórios foram gerados.

B. Gerar números aleatórios usando o script

Crie um arquivo bash com o seguinte script para gerar uma lista de números aleatórios com base no valor de entrada. O loop 'para' foi usado para executar o comando 'shuf' várias vezes para gerar a lista de números aleatórios entre 1 a 100 e imprimir os números.

#!/BIN/BASH
# Gere um comando aleatório usando 'shuf'
eco "Quantos números aleatórios você deseja gerar?: "
Número de leitura
#Print Os números aleatórios gerados
eco "Os números aleatórios gerados são:"
para n em 'seq "$ número"'
fazer
RandomNumber = $ (shuf -i 1-100 -N1)
eco $ RandomNumber
feito

A saída a seguir mostra que 5 foi tomado como o valor de entrada e 5 números aleatórios foram gerados, que não são superiores a 100 e não menos que 1.

Geração de números aleatórios usando /dev /urandom:

O /dev /urandom pode ser usado com comandos diferentes para gerar diferentes tipos de valores aleatórios. Não pode ser usado para especificar os valores do intervalo como o comando 'shuf' e $ aleatio. Mas o número de dígitos do número aleatório pode ser definido no comando com /dev /urandom. O uso do comando 'OD' com /dev /urandom mostrou na próxima parte deste tutorial. Este comando pode ser usado para especificar o número de bytes em que cada byte pode ser definido por um número decimal dentro de 0 a 255.

Execute o seguinte comando para gerar um número aleatório entre 0 e 255.

$ od -a n -t d -n 1 /dev /urandom

A saída mostra que o comando acima foi executado três vezes e três números aleatórios diferentes foram gerados aqui, onde os valores não são mais de 255.

Conclusão:

Três maneiras diferentes de gerar números aleatórios foram explicados neste tutorial usando vários exemplos. O codificador pode gerar uma gama específica de números aleatórios usando o comando $ aleatórios ou 'shuf' em bash. O codificador pode usar /dev /urandom com qualquer outro comando para gerar um número aleatório de bytes ou comprimentos específicos. Gerar números aleatórios é um requisito muito comum para a programação, e espero que os leitores possam gerar um número aleatório com base em seus requisitos depois de ler este tutorial.