Às vezes, estamos programando algum script em Bater … e precisamos (por algum motivo) gerar algum número aleatório.
Para isso você pode programar uma aplicação (ou função) inteira sim, mas... curiosamente nosso sistema já tem isso feito
Em um terminal, digite o seguinte e pressione [Entrar]:
echo $ RANDOM
…aparecerá um número, eles fazem a mesma coisa novamente e outro número aparece, 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ê precisar 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))
Está entendido, certo?
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
Bem, estou testando e ele só retorna um número de 4 dígitos, como torná-lo maior?
Dica muito interessante, obrigado.
Retorna um número entre 0 e 32768, não consegui obter números maiores.
e pode gerar exadecimais ????
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)
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? 🙂
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”.
mmm…. Gostei, tenho um mini script, ele é pintado para gerar números aleatórios, obrigado.
Serve .. e muito ..
especialmente se você está programando uma interface em bash com senha, segurança, etc, etc, etc haha.
Excelente suporte.
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.
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