(Bash): Comando para gerar número aleatório

Às vezes, estamos programando algum script em Bater … e precisamos (por algum motivo) gerar algum número aleatório.

Para isso pode programar uma aplicação (ou função ...) inteira sim, mas ... curiosamente, o nosso sistema já o fez 😀

Em um terminal, digite o seguinte e pressione [Entrar]:

echo $ RANDOM

... aparecerá um número, eles farão a mesma coisa novamente e outro número aparecerá, e assim por diante 🙂

O que ele faz é mostrar a você um número aleatório (qualquer) entre 0 e 32768 (inteiro, isto é, sem vírgula).

Se você precisa que seja um número aleatório, mas entre 0 e ... digamos 100, você pode colocar esse limite nele 😀

echo $ (($ RANDOM% 100))

O mesmo, outro exemplo ... se você quiser que seja um número entre 0 e 29 seria:

echo $ (($ RANDOM% 29))

Não é entendido? 😀

Se eles vão usá-lo em um script bash que estão fazendo, para atribuir o valor gerado (um número aleatório) a uma variável, seria:

VARIÁVEL = `echo $ (($ RANDOM))`

Bem, é isso, eu não sei sobre você ... mas eu sei que vai ser útil para mim em algum momento hahaha.

lembranças


10 comentários, deixe o seu

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Oscar dito

    Bem, estou testando e ele só retorna um número de 4 dígitos, como torná-lo maior?
    Dica muito interessante, obrigado.

    1.    KZKG ^ Gaara dito

      Retorna um número entre 0 e 32768, não consegui obter números maiores.

  2.   josue dito

    e pode gerar exadecimais ????

  3.   corvo dito

    VARIÁVEL = `echo $ (($ RANDOM))`

    Isso funciona, mas não é o ideal, pela simples razão de que RANDOM é uma variável e você pode fazer:
    variável = $ RANDOM
    e já! não execute echo em um terminal aprte (que é o que você está fazendo)

    1.    KZKG ^ Gaara dito

      Sim, obviamente pode ser conseguido assim ... a única diferença é que depois, para ver o número que a variável tirou (já que o usuário não é um adivinhador), seria necessário fazer um eco ... e no final, o que eu faço aqui é simplesmente fazer o eco (para que o usuário veja qual número foi tirado) desde o início.

      Eu me faço entender? 🙂

  4.   Bolivar wuilmer dito

    Outra forma de gerar um número aleatório, embora desta vez seja este comando:

    data "+% N" | cut -c 9

    Isso nos daria a data em nanossegundos com 9 dígitos. Se quisermos uma única figura, então você coloca o "cut -c 9" (a última figura é sempre mais aleatória porque é a menor do número). Se quisermos 2 algarismos, colocamos o "corte - c 8,9". Se quisermos três algarismos, "corte -c 7-9" (começamos usando o hífen).

    A única coisa ruim sobre isso é se queremos obter muitos números aleatórios em um curto espaço de tempo, porque esse é um número aleatório baseado em uma data com sua hora. Ou seja, se fizermos um for com esse comando, podemos ver que:

    $ para i em `seq 1 1 500`; fazer data "+% N"; feito

    ...
    ...
    ...

    308311367
    310807595
    313273093
    315725181
    318186139
    320671403
    323360117
    325733353
    328335462
    330694870
    333259893
    335858999
    338375622
    340798446

    ...
    ...
    ...

    Acho que tá claro né? As figuras da esquerda são mais semelhantes em um curto espaço de tempo, é claro, e as da direita são mais “aleatórias”.

  5.   olho roxo dito

    mmm…. Gostei, tenho um mini script, ele é pintado para gerar números aleatórios, obrigado.

  6.   G. dito

    Serve .. e muito ..
    especialmente se você está programando uma interface em bash com senha, segurança, etc, etc, etc haha.
    Excelente suporte.

  7.   José Antonio seguiu dobrado dito

    Olá.
    Em primeiro lugar, claro, parabéns por este excelente site, que acompanho há muito tempo.
    E em segundo lugar, faça uma pequena observação a esta entrada:
    Quando a limitação é feita assim:

    echo $ (($ RANDOM% 10))

    Na verdade, o que você pede ao intérprete é que seu número gerado seja sempre o módulo% (resto da divisão) do número subsequente, neste exemplo, 10.
    Qualquer número dividido por 10 nunca dará como resto algo maior do que o próprio divisor.
    O problema é que também não dará o mesmo número, porque uma divisão por 0 não é lógica para o intérprete.

    Isso significa que echo $ (($ RANDOM% 10) dará resultados entre 0 e 9, mas nunca 10.
    A solução para esse conflito é adicionar um ao seu limite, de modo que o mesmo número caia no intervalo aleatório.

    echo $ (($ RANDOM% 11))

    Isso dará resultados entre 0 e 10.

    Uma saudação.

  8.   amigo dito

    Olá, eu estava apenas construindo algo assim, mas me deparei com um problema.

    Eu quero fazer 6 números diferentes de 00 a 45, mas não repeti-los.

    echo $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($ ALEATÓRIO%46))

    EX: 17 33 16 36 45 27