(Bash): Opdrag om ewekansige getal te genereer

Soms programmeer ons een of ander script in Bash …. en ons moet (om een ​​of ander rede) 'n willekeurige getal genereer.

Daarvoor kan u 'n hele toepassing (of funksie ...) programmeer ja, maar ... vreemd genoeg het ons stelsel dit al gedoen 😀

Tik die volgende in 'n terminale en druk [Tik]:

eggo $ RANDOM

... 'n nommer sal verskyn, hulle doen weer dieselfde en 'n ander nommer, ensovoorts

Wat dit doen, is om u 'n ewekansige getal (enige) tussen 0 en 32768 te wys (heelgetal, dit wil sê sonder komma).

As u 'n ewekansige getal moet hê, maar tussen 0 en ... kom ons sê 100, kan u die limiet daarop plaas 😀

eggo $ (($ RANDOM% 100))

Dieselfde, nog 'n voorbeeld ... as u wil hê dat dit 'n getal tussen 0 en 29 moet wees, is dit:

eggo $ (($ RANDOM% 29))

Word dit nie verstaan ​​nie? 😀

As hulle dit in 'n bash-script gebruik wat hulle doen, is dit om die gegenereerde waarde ('n ewekansige getal) aan 'n veranderlike toe te ken:

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

Wel, dit is dit, ek weet nie van jou nie ... maar ek weet dat dit op 'n stadium vir my nuttig sal wees, hahaha.

Groete


Die inhoud van die artikel voldoen aan ons beginsels van redaksionele etiek. Klik op om 'n fout te rapporteer hier.

10 kommentaar, los joune

Laat u kommentaar

Jou e-posadres sal nie gepubliseer word nie. Verpligte velde gemerk met *

*

*

  1. Verantwoordelik vir die data: Miguel Ángel Gatón
  2. Doel van die data: Beheer SPAM, bestuur van kommentaar.
  3. Wettiging: U toestemming
  4. Kommunikasie van die data: Die data sal nie aan derde partye oorgedra word nie, behalwe deur wettige verpligtinge.
  5. Datastoor: databasis aangebied deur Occentus Networks (EU)
  6. Regte: U kan u inligting te alle tye beperk, herstel en verwyder.

  1.   Oscar dijo

    Wel, ek het dit getoets en dit gee slegs 'n 4-syfer-nommer, hoe kan ek dit groter maak?
    Baie interessante wenk, dankie.

    1.    KZKG ^ Gaara dijo

      Wys 'n getal tussen 0 en 32768, ek kon nie groter getalle kry nie.

  2.   Josua dijo

    en kan dit buitesimale genereer ????

  3.   kraai dijo

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

    Dit werk, maar is nie optimaal nie, om die eenvoudige rede dat RANDOM 'n veranderlike is en u kan doen:
    veranderlik = $ RANDOM
    en dit is dit! moenie eggo in 'n terminale aprte laat loop nie (dit is wat u doen)

    1.    KZKG ^ Gaara dijo

      Ja, uiteraard kan dit so bereik word ... die enigste verskil is dat om later die getal te sien wat die veranderlike geneem het (aangesien die gebruiker nie 'n raaier is nie), dit nodig sou wees om 'n eggo te doen ... Uiteindelik is dit wat ek hier doen, eenvoudig die eggo (sodat die gebruiker sien watter nommer geneem word) van die begin af doen.

      Laat ek my verstaan? 🙂

  4.   Wuilmer bolivar dijo

    Nog 'n manier om 'n ewekansige getal te genereer, alhoewel dit hierdie keer die opdrag is:

    datum "+% N" | sny -c 9

    Dit gee ons die datum in nanosekondes met 9 syfers. As ons 'n enkele syfer wil hê, plaas u die "cut -c 9" (die laaste syfer is altyd meer willekeurig omdat dit die kleinste van die getal is). As ons 2 syfers wil hê, plaas ons die "sny - c 8,9". As ons drie figure wil hê, dan moet u "sny -c 7-9" (ons begin met die koppelteken).

    Die enigste slegte ding hieraan is as ons binne 'n kort tyd baie ewekansige getalle in 'n ry wil kry, want dit is 'n ewekansige getal gebaseer op 'n datum met sy tyd. Dit wil sê, as ons 'n voorstel maak met die opdrag, kan ons sien dat:

    $ vir i in 'vlg 1 1 500'; doen datum "+% N"; gedoen

    ...
    ...
    ...

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

    ...
    ...
    ...

    Ek dink dit is duidelik, of hoe? Die figure aan die linkerkant is natuurlik meer binne 'n kort tydjie en diegene aan die regterkant is meer "ewekansig".

  5.   blou oog dijo

    mmm…. Ek het daarvan gehou, ek het 'n mini-skrif, dit is geverf om ewekansige getalle te genereer, dankie.

  6.   G. dijo

    Dit dien .. en baie ..
    veral as u 'n koppelvlak in bash met wagwoord, sekuriteit, ens, ens, ens. programmeer haha.
    Uitstekende voorskoot.

  7.   José Antonio het Bent gevolg dijo

    Hello.
    In die eerste plek natuurlik baie geluk met hierdie uitstekende webwerf wat ek al lank volg.
    En tweedens, maak 'n klein aantekening by hierdie inskrywing:
    As die beperking so gedoen word:

    eggo $ (($ RANDOM% 10))

    Eintlik, wat u die tolk bestel, is dat u gegenereerde getal altyd die modulus% (res van die verdeling) van die daaropvolgende getal is, in hierdie voorbeeld, 10.
    Enige getal gedeel deur 10 sal nooit as iets groter gee as die deler self nie.
    Die probleem is dat dit ook nie dieselfde getal sal gee nie, want 'n deling deur 0 is nie logies vir die tolk nie.

    Dit beteken dat echo $ (($ RANDOM% 10) resultate tussen 0 en 9 sal lewer, maar nooit 10 nie.
    Die oplossing vir hierdie konflik is om een ​​by u limiet te voeg, sodat dieselfde getal binne die ewekansige omvang val.

    eggo $ (($ RANDOM% 11))

    Dit gee resultate tussen 0 en 10.

    'N groet.

  8.   amiel dijo

    Hallo, ek was net besig om so iets te bou, maar ek het 'n probleem ondervind.

    Ek wil 6 verskillende getalle van 00 tot 45 maak, maar nie herhaal nie.

    eggo $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($ RANDOM%46))

    EX: 17 33 16 36 45 27