(Bash): Comandă pentru a genera un număr aleatoriu

Uneori, programăm un script în Bash …. și trebuie (din anumite motive) să generăm un număr aleatoriu.

Pentru asta puteți programa o întreagă aplicație (sau funcție ...) da, dar ... curios sistemul nostru a făcut deja asta 😀

Într-un terminal, tastați următoarele și apăsați [Introduce]:

ecou $ RANDOM

... va apărea un număr, fac din nou același lucru și apare un alt număr și așa mai departe on

Ceea ce face este să vă arate un număr aleatoriu (oricare) între 0 și 32768 (întreg, adică fără virgulă).

Dacă aveți nevoie să fie un număr aleatoriu, dar între 0 și ... să zicem 100, puteți pune acea limită 😀

ecou $ (($ RANDOM% 100))

La fel, un alt exemplu ... dacă doriți să fie un număr între 0 și 29 ar fi:

ecou $ (($ RANDOM% 29))

Se înțelege că nu? 😀

Dacă îl vor folosi într-un script bash pe care îl fac, pentru a atribui valoarea generată (un număr aleatoriu) unei variabile ar fi:

VARIABLE = "echo $ (($ RANDOM))"

Ei bine, asta este, nu știu despre tine ... dar știu că îmi va fi util la un moment dat hahaha.

În ceea ce priveşte


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Oscar el a spus

    Ei bine, l-am testat și returnează doar un număr din 4 cifre, cum îl pot face mai mare?
    Sfat foarte interesant, mulțumesc.

    1.    KZKG ^ Gaara el a spus

      Returnează un număr între 0 și 32768, nu am putut obține numere mai mari.

  2.   Josue el a spus

    si poate genera exadecimale ????

  3.   corb el a spus

    VARIABLE = "echo $ (($ RANDOM))"

    Acest lucru funcționează, dar nu este optim, pentru simplul motiv că RANDOM este o variabilă și puteți face:
    variabilă = $ RANDOM
    si asta e! nu rulați ecou într-un terminal aprte (ceea ce faceți)

    1.    KZKG ^ Gaara el a spus

      Da, evident că se poate realiza așa ... singura diferență este că ulterior, pentru a vedea numărul pe care l-a luat variabila (deoarece utilizatorul nu este un ghicitor), ar fi necesar să facem un ecou .... iar la final, ceea ce fac aici este pur și simplu să fac ecoul (astfel încât utilizatorul să poată vedea ce număr este luat) de la început.

      Mă fac să mă înțeleg? 🙂

  4.   Wuilmer bolivar el a spus

    O altă modalitate de a genera un număr aleatoriu, deși de data aceasta ar fi această comandă:

    data „+% N” | tăiat -c 9

    Asta ne-ar da data în nanosecunde cu 9 cifre. Dacă vrem o singură cifră, atunci puneți „cut -c 9” (ultima cifră este întotdeauna mai aleatorie, deoarece este cea mai mică dintre numărul). Dacă vrem 2 figuri atunci punem „tăiat - c 8,9”. Dacă vrem trei cifre, atunci „tăiați -c 7-9” (începem să folosim cratima).

    Singurul lucru rău în acest sens este dacă vrem să obținem multe numere aleatorii la rând într-un timp scurt, deoarece acesta este un număr aleatoriu bazat pe o dată cu ora sa. Adică, dacă facem o for cu acea comandă, putem vedea că:

    $ pentru i în `seq 1 1 500`; faceți data "+% N"; Terminat

    ...
    ...
    ...

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

    ...
    ...
    ...

    Cred că e clar nu? Cifrele din stânga sunt mai asemănătoare într-un spațiu scurt de timp, desigur, iar cele din dreapta sunt mai „aleatorii”.

  5.   ochi vanat el a spus

    mmm…. Mi-a plăcut, am un mini script, este pictat pentru a genera numere aleatorii, mulțumesc.

  6.   G. el a spus

    Serveste .. si mult ..
    mai ales dacă programați o interfață în bash cu parolă, securitate, etc, etc, etc haha.
    Aprot excelent.

  7.   José Antonio l-a urmărit pe Bent el a spus

    Buna ziua.
    În primul rând, desigur, felicitări pentru acest excelent site web, pe care îl urmăresc de mult timp.
    Și în al doilea rând, faceți o mică notă la această intrare:
    Când limitarea se face astfel:

    ecou $ (($ RANDOM% 10))

    De fapt, ceea ce comandați interpretului este că numărul dvs. generat este întotdeauna modulul% (restul diviziunii) al numărului următor, în acest exemplu, 10.
    Orice număr împărțit la 10 nu va da niciodată ca rest ceva mai mare decât divizorul în sine.
    Problema este că nici nu va da același număr, deoarece o împărțire la 0 nu este logică pentru interpret.

    Aceasta înseamnă că echo $ (($ RANDOM% 10) va da rezultate între 0 și 9, dar niciodată 10.
    Soluția la acest conflict este să adăugați una la limita dvs., astfel încât același număr să se încadreze în intervalul aleatoriu.

    ecou $ (($ RANDOM% 11))

    Acest lucru va da rezultate între 0 și 10.

    Un salut.

  8.   amiel el a spus

    Bună, tocmai construiam așa ceva, dar am întâmpinat o problemă.

    Vreau să fac 6 numere diferite de la 00 la 45, dar să nu le repet.

    eco $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($ RANDOM%46))

    EX: 17 33 16 36 45 27