(Bash): comando per generare un numero casuale

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


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   Oscar suddetto

    Bene, l'ho testato e restituisce solo un numero di 4 cifre, come posso ingrandirlo?
    Suggerimento molto interessante, grazie.

    1.    KZKG ^ Gaara suddetto

      Restituisce un numero compreso tra 0 e 32768, non sono stato in grado di ottenere numeri maggiori.

  2.   Josue suddetto

    e può generare esadecimali ????

  3.   Corvo suddetto

    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)

    1.    KZKG ^ Gaara suddetto

      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? 🙂

  4.   Wuilmer bolivar suddetto

    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”.

  5.   occhio nero suddetto

    mmm…. Mi è piaciuto, ho un mini script che genera numeri casuali, grazie.

  6.   G. suddetto

    Serve .. e molto ..
    specialmente se stai programmando un'interfaccia in bash con password, sicurezza, ecc., ecc., ecc. haha.
    Ottima albota.

  7.   José Antonio ha seguito Bent suddetto

    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.

  8.   amiel suddetto

    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