(Bash): Naredba za generiranje slučajnog broja

Ponekad programiramo neku skriptu na jeziku bash …. i trebamo (iz nekog razloga) generirati neki slučajni broj.

Za to možete programirati cijelu aplikaciju (ili funkciju ...) da, ali ... znatiželjno, naš sistem je to već učinio 😀

U terminal unesite sljedeće i pritisnite [unesite]:

echo $ RANDOM

... pojavit će se broj, oni će ponoviti isto, a pojavit će se drugi broj, i tako dalje 🙂

Ono što radi je da vam pokaže slučajni broj (bilo koji) između 0 i 32768 (cijeli broj, odnosno bez zareza).

Ako vam je potreban slučajan broj, ali između 0 i ... recimo 100, možete to ograničenje staviti 😀

echo $ (($ RANDOM% 100))

Isti, još jedan primjer ... ako želite da to bude broj između 0 i 29 to bi bilo:

echo $ (($ RANDOM% 29))

Zar se to ne razumije? 😀

Ako će ga koristiti u bash skripti koju rade, dodjeljivanje generirane vrijednosti (slučajni broj) varijabli bilo bi:

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

I dobro, to je to, ne znam za vas ... ali znam da će mi to kad-tad biti korisno hahaha.

Saludos


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Oscar rekao je

    Pa, testirao sam ga i vraća samo četveroznamenkasti broj, kako ga povećati?
    Vrlo zanimljiv savjet, hvala.

    1.    KZKG ^ Gaara rekao je

      Vraća broj između 0 i 32768, nisam uspio dobiti veće brojeve.

  2.   josue rekao je

    i može li generirati exadecimals ????

  3.   gavran rekao je

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

    To djeluje, ali nije optimalno, iz jednostavnog razloga što je RANDOM varijabla i možete učiniti:
    varijabla = $ RANDOM
    i to je to! nemojte pokretati odjek u aprte terminalu (što i radite)

    1.    KZKG ^ Gaara rekao je

      Da, očito se to može postići ovako ... jedina razlika je u tome što bi kasnije, da bi se vidio broj koji je varijabla uzela (budući da korisnik nije pogađač), bilo potrebno izvršiti odjek .... i na kraju, ono što ovdje radim je jednostavno odzvanjanje (tako da korisnik može vidjeti koji se broj uzima) od početka.

      Da li se razumijem? 🙂

  4.   Wuilmer bolivar rekao je

    Drugi način generiranja slučajnog broja, iako bi ovaj put to bila ova naredba:

    datum "+% N" | cut -c 9

    To bi nam dalo datum u nanosekundama sa 9 znamenki. Ako želimo jednu brojku, tada stavite "cut -c 9" (zadnja brojka je uvijek slučajnija jer je najmanja od broja). Ako želimo dvije brojke, tada stavljamo "rez - c 2". Ako želimo tri brojke, onda "isecite -c 8,9-7" (počinjemo koristiti crticu).

    Jedina loša stvar u vezi s tim je ako želimo dobiti puno slučajnih brojeva u nizu u kratkom vremenu, jer je to slučajni broj zasnovan na datumu sa svojim vremenom. Odnosno, ako pomoću naredbe napravimo for, možemo vidjeti da:

    $ za i u `seq 1 1 500`; datum završetka "+% N"; gotovo

    ...
    ...
    ...

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

    ...
    ...
    ...

    Mislim da je to jasno, zar ne? Brojke na lijevoj strani su, naravno, sličnije u kratkom vremenskom razmaku, a one na desnoj su više "slučajne".

  5.   crno oko rekao je

    mmm…. Svidjelo mi se, imam mini skriptu koja je preostala za generiranje slučajnih brojeva, hvala.

  6.   G. rekao je

    Služi .. i puno ..
    pogotovo ako programirate interfejs u bash-u sa lozinkom, zaštitom, itd, itd, itd haha.
    Izvrsna prilika.

  7.   José Antonio slijedio je Benta rekao je

    Zdravo.
    Prije svega, naravno, čestitke na ovoj izvrsnoj web stranici koju pratim već dugo.
    I drugo, dodajte malu bilješku uz ovaj unos:
    Kada se ograničenje radi ovako:

    echo $ (($ RANDOM% 10))

    Zapravo, ono što naručite tumaču je da je vaš generirani broj uvijek modul% (ostatak podjele) sljedećeg broja, u ovom primjeru 10.
    Bilo koji broj podijeljen s 10 nikada neće dati ostatku nešto veće od samog djelitelja.
    Problem je što ni on neće dati isti broj, jer podjela s 0 nije logična za tumača.

    To znači da će echo $ (($ RANDOM% 10) dati rezultate između 0 i 9, ali nikada 10.
    Rješenje ovog sukoba je dodavanje jednog vašem ograničenju, tako da isti broj spada u slučajni raspon.

    echo $ (($ RANDOM% 11))

    To će dati rezultate između 0 i 10.

    A pozdrav.

  8.   amiel rekao je

    Zdravo, upravo sam pravio ovako nešto, ali sam naišao na problem.

    Želim da napravim 6 različitih brojeva od 00 do 45, ali da ih ne ponavljam.

    echo $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($ RANDOM%46))

    Npr.: 17 33 16 36 45 27