(Bash): Komento tuottaa satunnaisluku

Joskus ohjelmoimme jonkin käsikirjoituksen sisään Kemut …. ja meidän on (jostain syystä) luotava satunnaisluku.

Tätä varten voit ohjelmoida koko sovelluksen (tai toiminnon ...) kyllä, mutta ... utelias järjestelmämme on jo tehnyt sen 😀

Kirjoita päätelaitteeseen seuraava ja paina [Tulla sisään]:

echo $ RANDOM

... numero ilmestyy, he tekevät saman uudelleen ja toinen numero tulee näkyviin, ja niin edelleen 🙂

Se näyttää sinulle satunnaisluvun (minkä tahansa) välillä 0 ja 32768 (kokonaisluku, eli ilman pilkua).

Jos tarvitset sen olevan satunnaisluku, mutta välillä 0 ja ... sanotaan 100, voit asettaa sille rajoituksen 😀

echo $ (($ RANDOM% 100))

Sama, toinen esimerkki ... jos haluat sen olevan luku välillä 0 ja 29, se olisi:

echo $ (($ RANDOM% 29))

Eikö ymmärrä? 😀

Jos he käyttävät sitä tekemässään bash-komentosarjassa, määritetyn arvon (satunnaisluku) määrittäminen muuttujalle olisi:

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

No, tämä on se, en tiedä sinusta ... mutta tiedän, että siitä on minulle hyötyä jossain vaiheessa hahaha.

terveiset


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.

  1.   oscar dijo

    No, olen testannut sitä ja se palauttaa vain nelinumeroisen luvun, kuinka voin tehdä siitä suuremman?
    Erittäin mielenkiintoinen vinkki, kiitos.

    1.    KZKG ^ Gaara dijo

      Palauttaa luvun välillä 0 ja 32768, en ole saanut suurempia lukuja.

  2.   josue dijo

    ja voiko se luoda exadecimals ????

  3.   korppi dijo

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

    Se toimii, mutta ei ole optimaalinen siitä yksinkertaisesta syystä, että RANDOM on muuttuja ja voit tehdä:
    muuttuja = $ RANDOM
    ja siinä kaikki! älä suorita kaikua päätelaitteessa (mitä teetkin)

    1.    KZKG ^ Gaara dijo

      Kyllä, ilmeisesti se voidaan saavuttaa tällä tavoin ... ainoa ero on, että myöhemmin, jotta saat muuttujan ottaman numeron (koska käyttäjä ei ole arvaaja), olisi tehtävä kaiku…. ja lopulta teen vain yksinkertaisesti kaikun (jotta käyttäjä näkee, mikä numero on otettu) alusta alkaen.

      Saanko minut ymmärtää? 🙂

  4.   Wuilmer bolivar dijo

    Toinen tapa luoda satunnaisluku, vaikka tällä kertaa se olisi tämä komento:

    päivämäärä "+% N" | leikkaus -c 9

    Se antaisi meille päivämäärän nanosekunteina 9 numerolla. Jos haluamme yhden numeron, laitat "leikkaus -c 9" (viimeinen numero on aina satunnaisempi, koska se on pienin luvusta). Jos haluamme 2 numeroa, laitamme "leikkaus - c 8,9". Jos haluamme kolme numeroa, "leikkaa -c 7-9" (aloitamme yhdysmerkin käyttämisen).

    Ainoa huono asia tässä on, jos haluamme saada useita satunnaisia ​​numeroita peräkkäin lyhyessä ajassa, koska tämä on satunnainen luku, joka perustuu päivämäärään sen ajan kanssa. Toisin sanoen, jos teemme tuon komennon, voimme nähdä, että:

    $ for i "sekvenssissä 1 1"; tee päivämäärä "+% N"; tehty

    ...
    ...
    ...

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

    ...
    ...
    ...

    Mielestäni on selvää, eikö? Vasemmalla puolella olevat luvut ovat tietysti samanlaisia ​​lyhyessä ajassa, ja oikealla puolella olevat luvut ovat “satunnaisempia”.

  5.   musta silmä dijo

    mmm… Pidin siitä, minulla on miniskripti, se on maalattu satunnaislukujen luomiseksi, kiitos.

  6.   G. dijo

    Se palvelee .. ja paljon ..
    varsinkin jos ohjelmoit bash-käyttöliittymän salasanalla, tietoturvalla jne., jne., jne. haha.
    Erinomainen aprote.

  7.   José Antonio seurasi Bentiä dijo

    Hei.
    Ensinnäkin tietysti onnittelut tästä erinomaisesta verkkosivustosta, jota olen seurannut pitkään.
    Ja toiseksi, tee pieni merkintä tähän merkintään:
    Kun rajoittaminen tapahtuu näin:

    echo $ (($ RANDOM% 10))

    Itse asiassa, mitä tilaat tulkin, on se, että luotu lukusi on aina seuraavan luvun, tässä esimerkissä 10, moduuli% (jaon loppuosa).
    Mikä tahansa luku, joka on jaettu 10: llä, ei koskaan anna lopuksi jotain suurempaa kuin itse jakaja.
    Ongelmana on, että se ei myöskään anna samaa numeroa, koska jakaminen 0: lla ei ole loogista tulkin kannalta.

    Tämä tarkoittaa, että echo $ (($ RANDOM% 10) antaa tuloksia välillä 0 ja 9, mutta ei koskaan 10.
    Ratkaisu tähän ristiriitaan on lisätä yksi rajasi, niin että sama määrä kuuluu satunnaisalueeseen.

    echo $ (($ RANDOM% 11))

    Tämä antaa tuloksia välillä 0-10.

    Tervehdys.

  8.   amiel dijo

    Hei, olin juuri rakentamassa jotain tällaista, mutta törmäsin ongelmaan.

    Haluan tehdä 6 erilaista numeroa välillä 00-45, mutta en toista niitä.

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

    EX: 17 33 16 36 45 27