(Bash): Kommando til at generere tilfældigt tal

Nogle gange programmerer vi noget script i Bash …. og vi har brug for (af en eller anden grund) at generere et tilfældigt tal.

Til det kan du programmere en hel applikation (eller funktion ...) ja, men ... underligt nok har vores system allerede gjort det 😀

Skriv følgende i en terminal og tryk på [Gå ind]:

ekko $ RANDOM

... et nummer vises, de gør det samme igen, og et andet nummer vises osv. 🙂

Hvad det gør er at vise dig et tilfældigt tal (ethvert) mellem 0 og 32768 (heltal, det vil sige uden komma).

Hvis du har brug for det for at være et tilfældigt tal, men mellem 0 og ... lad os sige 100, kan du sætte den grænse for det 😀

ekko $ (($ RANDOM% 100))

Det samme, et andet eksempel ... hvis du vil have det til at være et tal mellem 0 og 29, ville det være:

ekko $ (($ RANDOM% 29))

Forståes det ikke? 😀

Hvis de bruger det i et bash-script, de laver, for at tildele den genererede værdi (et tilfældigt tal) til en variabel ville det være:

VARIABLE = `echo $ (($ RANDOM))`

Nå, det er det, jeg ved ikke om dig ... men jeg ved, at det vil være nyttigt for mig på et tidspunkt hahaha.

hilsen


10 kommentarer, lad dine

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   Oscar sagde han

    Nå, jeg har testet det, og det returnerer kun et 4-cifret tal, hvordan kan jeg gøre det større?
    Meget interessant tip, tak.

    1.    KZKG ^ Gaara sagde han

      Returnerer et tal mellem 0 og 32768, jeg har ikke været i stand til at få større tal.

  2.   Josue sagde han

    og kan det generere eksecimaler ????

  3.   ravn sagde han

    VARIABLE = `echo $ (($ RANDOM))`

    Det fungerer, men er ikke optimalt, af den enkle grund, at RANDOM er en variabel, og du kan gøre:
    variabel = $ RANDOM
    og det er det! kør ikke ekko i en terminal aprte (hvilket er hvad du laver)

    1.    KZKG ^ Gaara sagde han

      Ja, det kan naturligvis opnås sådan ... den eneste forskel er, at det senere ville være nødvendigt at lave et ekko for at se antallet, som variablen tog (da brugeren ikke er en gætter). og i sidste ende, hvad jeg laver her er simpelthen at gøre ekkoet (så brugeren kan se, hvilket nummer der tages) fra starten.

      Gør jeg mig forstået? 🙂

  4.   Wuilmer bolivar sagde han

    En anden måde at generere et tilfældigt tal på, selvom det denne gang ville være denne kommando:

    dato "+% N" | skære -c 9

    Det ville give os datoen i nanosekunder med 9 cifre. Hvis vi vil have et enkelt ciffer, skal du sætte "cut -c 9" (det sidste ciffer er altid mere tilfældigt, fordi det er det mindste af tallet). Hvis vi vil have 2 tal, sætter vi "cut - c 8,9". Hvis vi vil have tre figurer, skal du "klippe -c 7-9" (vi begynder at bruge bindestreg).

    Den eneste dårlige ting ved dette er, hvis vi ønsker at få mange tilfældige tal i træk på kort tid, fordi dette er et tilfældigt tal baseret på en dato med dens tid. Det vil sige, hvis vi laver en med denne kommando, kan vi se, at:

    $ for i i `seq 1 1 500`; udførelsesdato "+% N"; Færdig

    ...
    ...
    ...

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

    ...
    ...
    ...

    Jeg synes, det er klart, ikke? Figurerne til venstre er naturligvis mere ens på kort tid, og dem til højre er mere “tilfældige”.

  5.   blåt øje sagde han

    mmm…. Jeg kunne godt lide det, jeg har et mini-script, det er malet for at generere tilfældige tal, tak.

  6.   G. sagde han

    Det tjener .. og meget ..
    især hvis du programmerer en grænseflade i bash med adgangskode, sikkerhed osv. osv. osv. haha.
    Fremragende aprote.

  7.   José Antonio fulgte Bent sagde han

    Hej.
    Først og fremmest selvfølgelig tillykke med denne fremragende hjemmeside, som jeg har fulgt længe.
    Og for det andet, skriv en lille note til denne post:
    Når begrænsning gøres sådan:

    ekko $ (($ RANDOM% 10))

    Det, du bestiller tolk, er faktisk, at dit genererede nummer altid er modulus% (resten af ​​divisionen) af det efterfølgende nummer, i dette eksempel 10.
    Ethvert tal divideret med 10 vil aldrig give som en rest noget større end deleren selv.
    Problemet er, at det heller ikke giver det samme tal, fordi en division med 0 ikke er logisk for tolken.

    Dette betyder, at ekko $ (($ RANDOM% 10) vil give resultater mellem 0 og 9, men aldrig 10.
    Løsningen på denne konflikt er at tilføje en til din grænse, så det samme antal falder inden for det tilfældige interval.

    ekko $ (($ RANDOM% 11))

    Dette giver resultater mellem 0 og 10.

    En hilsen.

  8.   amiel sagde han

    Hej, jeg var lige ved at bygge sådan noget, men jeg stødte på et problem.

    Jeg vil lave 6 forskellige tal fra 00 til 45, men ikke gentage dem.

    ekko $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($ TILFÆLDIGT%46))

    EX: 17 33 16 36 45 27