(Bash): Príkaz na vygenerovanie náhodného čísla

Niekedy programujeme nejaký skript tresnúť …. a musíme (z nejakého dôvodu) vygenerovať nejaké náhodné číslo.

Za to môžete naprogramovať celú aplikáciu (alebo funkciu ...) áno, ale ... je kuriózne, že to náš systém už urobil 😀

Do terminálu zadajte nasledujúci text a stlačte [vstúpiť]:

ozvena $ RANDOM

... objaví sa číslo, urobia znova to isté a objaví sa ďalšie číslo atď. 🙂

To, čo robí, je to, že vám ukáže náhodné číslo (akékoľvek) medzi 0 a 32768 (celé číslo, to znamená bez čiarky).

Ak potrebujete, aby to bolo náhodné číslo, ale medzi 0 a ... povedzme 100, môžete to obmedziť 😀

echo $ (($ RANDOM% 100))

To isté, ďalší príklad ... ak chcete, aby to bolo číslo od 0 do 29, bolo by to:

echo $ (($ RANDOM% 29))

Je to pochopené nie? 😀

Ak ho použijú v skripte bash, ktorý práve robia, priradiť vygenerovanú hodnotu (náhodné číslo) k premennej by to bolo:

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

A toto je všetko, neviem ako vy ... ale viem, že mi to bude niekedy užitočné hahaha.

pozdravy


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.

  1.   Oskar dijo

    No, testoval som to a vráti iba 4-ciferné číslo, ako ho zväčšiť?
    Veľmi zaujímavý tip, ďakujem.

    1.    KZKG ^ Gaara dijo

      Vráti číslo medzi 0 a 32768, väčšie čísla sa mi nepodarilo získať.

  2.   Josue dijo

    a môže generovať exadecimálne čísla ????

  3.   havran dijo

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

    To funguje, ale nie je to optimálne, z jednoduchého dôvodu, že RANDOM je premenná a môžete robiť:
    premenná = RANDOM
    a to je všetko! nespúšťajte echo v termináli aprte (čo práve robíte)

    1.    KZKG ^ Gaara dijo

      Áno, samozrejme sa to dá dosiahnuť takto ... jediný rozdiel je v tom, že neskôr, aby sme videli počet, ktorý premenná zaujala (pretože používateľ nie je hádač), bolo by potrebné urobiť ozvenu .... a nakoniec to, čo tu robím, je jednoducho vykonanie echa (aby používateľ videl, aké číslo sa vezme) od začiatku.

      Rozumiem tomu sám? 🙂

  4.   Wuilmerov bolivar dijo

    Ďalším spôsobom, ako vygenerovať náhodné číslo, aj keď tentokrát by to bol tento príkaz:

    dátum "+% N" | rez -c 9

    To by nám dalo dátum s 9 číslicami v nanosekundách. Ak chceme jednu číslicu, vložíte „cut -c 9“ (posledná číslica je vždy náhodnejšia, pretože je najmenšia z počtu). Ak chceme 2 číslice, vložíme „cut - c 8,9“. Ak chceme tri číslice, „cut -c 7-9“ (začneme používať spojovník).

    Jedinou zlou vecou na tom je, ak chceme v krátkom čase získať veľa náhodných čísel za sebou, pretože ide o náhodné číslo založené na dátume s jeho časom. To znamená, že ak pomocou tohto príkazu urobíme for, môžeme vidieť, že:

    $ za i v `seq 1 1 500`; urobiť dátum "+% N"; hotový

    ...
    ...
    ...

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

    ...
    ...
    ...

    Myslím, že je to jasné, že? Čísla vľavo sú samozrejme v krátkom čase podobnejšie a vpravo sú viac „náhodné“.

  5.   čierne oko dijo

    mmm…. Páčilo sa mi to, mám mini skript, ktorý generuje náhodné čísla, ďakujem.

  6.   G. dijo

    Slúži .. a veľa ..
    najmä ak programujete rozhranie v prostredí bash pomocou hesla, zabezpečenia atď., atď., haha.
    Vynikajúca aprote.

  7.   Používateľ José Antonio začal sledovať Bent dijo

    Dobrý deň.
    V prvom rade samozrejme gratulujem k tomuto vynikajúcemu webu, ktorý dlhodobo sledujem.
    A za druhé, urobte si malú poznámku k tomuto záznamu:
    Keď sa obmedzenie vykoná takto:

    echo $ (($ RANDOM% 10))

    To, čo si objednáte tlmočníka, je, že vaše vygenerované číslo je vždy modul% (zvyšok rozdelenia) následného čísla, v tomto príklade 10.
    Akékoľvek číslo delené 10 nikdy nezíska ako zvyšok niečo väčšie ako samotný deliteľ.
    Problém je v tom, že tiež nedá rovnaké číslo, pretože delenie číslom 0 nie je pre tlmočníka logické.

    To znamená, že echo $ (($ RANDOM% 10) poskytne výsledky medzi 0 a 9, nikdy však 10.
    Riešením tohto konfliktu je pridať k svojmu limitu jednu, aby rovnaký počet spadal do náhodného rozsahu.

    echo $ (($ RANDOM% 11))

    Získate výsledky medzi 0 a 10.

    Pozdrav.

  8.   amiel dijo

    Dobrý deň, práve som niečo také staval, no narazil som na problém.

    Chcem vytvoriť 6 rôznych čísel od 00 do 45, ale neopakovať ich.

    echo $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($) NÁHODNÉ%46))

    EX: 17 33 16 36 45 27