A volte, stiamo programmando qualche script in Bash …. e abbiamo bisogno (per qualche motivo) di generare un numero casuale.
Per questo puoi programmare un'intera applicazione (o funzione ...) sì, ma ... curiosamente, il nostro sistema lo ha già fatto 😀
In un terminale, digitare quanto segue e premere [Accedere]:
echo $ RANDOM
... apparirà un numero, faranno di nuovo la stessa cosa e apparirà un altro numero, e così via 🙂
Quello che fa è mostrarti un numero casuale (qualsiasi) compreso tra 0 e 32768 (intero, cioè senza virgola).
Se hai bisogno che sia un numero casuale, ma tra 0 e ... diciamo 100, puoi mettere quel limite su di esso 😀
echo $ (($ RANDOM% 100))
Lo stesso, un altro esempio ... se vuoi che sia un numero compreso tra 0 e 29 sarebbe:
echo $ (($ RANDOM% 29))
Non si è capito? 😀
Se lo useranno in uno script bash che stanno facendo, per assegnare il valore generato (un numero casuale) a una variabile sarebbe:
VARIABILE = `echo $ (($ RANDOM))`
Bene, questo è tutto, non so voi ... ma so che mi sarà utile ad un certo punto hahaha.
saluti
Bene, l'ho testato e restituisce solo un numero di 4 cifre, come posso ingrandirlo?
Suggerimento molto interessante, grazie.
Restituisce un numero compreso tra 0 e 32768, non sono stato in grado di ottenere numeri maggiori.
e può generare esadecimali ????
VARIABILE = `echo $ (($ RANDOM))`
Funziona ma non è ottimale, per il semplice motivo che RANDOM è una variabile e puoi fare:
variabile = $ RANDOM
e questo è tutto! non eseguire echo in un terminale aprte (che è quello che stai facendo)
Sì, ovviamente si può ottenere in questo modo… l'unica differenza è che in seguito, per vedere il numero che ha preso la variabile (dato che l'utente non è un indovino), sarebbe necessario fare un eco…. e alla fine, quello che faccio qui è semplicemente fare l'eco (in modo che l'utente veda quale numero è stato preso) dall'inizio.
Mi faccio capire? 🙂
Un altro modo per generare un numero casuale, anche se questa volta sarebbe questo comando:
data "+% N" | taglio -c 9
Questo ci darebbe la data in nanosecondi con 9 cifre. Se vogliamo una cifra singola, allora metti il "cut -c 9" (l'ultima cifra è sempre più casuale perché è la più piccola del numero). Se vogliamo 2 cifre, mettiamo il "taglio - c 8,9". Se vogliamo tre cifre, "taglia -c 7-9" (iniziamo a usare il trattino).
L'unica cosa negativa di questo è se vogliamo ottenere molti numeri casuali di seguito in breve tempo, perché questo è un numero casuale basato su una data con il suo tempo. Cioè, se creiamo un per con quel comando possiamo vedere che:
$ for i in "seq 1 1 500"; data "+% N"; fatto
...
...
...
308311367
310807595
313273093
315725181
318186139
320671403
323360117
325733353
328335462
330694870
333259893
335858999
338375622
340798446
...
...
...
Penso che sia chiaro, vero? Le figure a sinistra sono più simili in poco tempo, ovviamente, e quelle a destra sono più “casuali”.
mmm…. Mi è piaciuto, ho un mini script che genera numeri casuali, grazie.
Serve .. e molto ..
specialmente se stai programmando un'interfaccia in bash con password, sicurezza, ecc., ecc., ecc. haha.
Ottima albota.
Hey.
Prima di tutto, ovviamente, congratulazioni per questo eccellente sito Web, che seguo da molto tempo.
E in secondo luogo, prendi una piccola nota a questa voce:
Quando un limite è fatto in questo modo:
echo $ (($ RANDOM% 10))
In realtà, ciò che ordini all'interprete è che il tuo numero generato è sempre il modulo% (resto della divisione) del numero successivo, in questo esempio, 10.
Qualsiasi numero diviso per 10 non darà mai come resto qualcosa di più grande del divisore stesso.
Il problema è che non darà nemmeno lo stesso numero, perché una divisione per 0 non è logica per l'interprete.
Ciò significa che echo $ (($ RANDOM% 10) darà risultati compresi tra 0 e 9, ma mai 10.
La soluzione a questo conflitto è aggiungere uno al tuo limite, in modo che lo stesso numero rientri nell'intervallo casuale.
echo $ (($ RANDOM% 11))
Questo darà risultati tra 0 e 10.
Saluti.
Ciao, stavo solo costruendo qualcosa del genere, ma ho riscontrato un problema.
Voglio fare 6 numeri diversi da 00 a 45 ma non ripeterli.
echo $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($ CASUALE%46))
EX: 17 33 16 36 45 27