(Bash): Komando por generi hazardan nombron

Foje ni programas iun skripton en Bash …. kaj ni bezonas (ial) generi iun hazardan nombron.

Por tio vi povas programi tutan aplikaĵon (aŭ funkcion ...) jes, sed ... kurioze nia sistemo jam faris tion 😀

En fina stacio tajpu la jenon kaj premu [Eniru]:

eoo $ ALZANDA

... numero aperos, ili faras la samon denove kaj aperas alia numero, kaj tiel plu 🙂

Kion ĝi montras estas hazarda nombro (ajna) inter 0 kaj 32768 (entjero, tio estas sen komo).

Se vi bezonas ĝin por esti hazarda nombro, sed inter 0 kaj ... ni diru 100, vi povas meti tiun limon sur ĝin 😀

eoo $ (($ RANDOM% 100))

Same, alia ekzemplo ... se vi volas, ke ĝi estu nombro inter 0 kaj 29 ĝi estus:

eoo $ (($ RANDOM% 29))

Ĉu ĝi komprenas ne? 😀

Se ili uzos ĝin en bash-skripto, kiun ili faras, por atribui la generitan valoron (hazarda nombro) al variablo ĝi estus:

VARIABLE = "eoo $ (($ ALZANDA))"

Nu, jen, mi ne scias pri vi ... sed mi scias, ke ĝi estos utila al mi en iu momento hahaha.

salutoj


La enhavo de la artikolo aliĝas al niaj principoj de redakcia etiko. Por raporti eraron alklaku Ĉi tie.

10 komentoj, lasu la viajn

Lasu vian komenton

Via retpoŝta adreso ne estos eldonita. Postulita kampojn estas markita per *

*

*

  1. Respondeculo pri la datumoj: Miguel Ángel Gatón
  2. Celo de la datumoj: Kontrola SPAM, administrado de komentoj.
  3. Legitimado: Via konsento
  4. Komunikado de la datumoj: La datumoj ne estos komunikitaj al triaj krom per laŭleĝa devo.
  5. Stokado de datumoj: Datumbazo gastigita de Occentus Networks (EU)
  6. Rajtoj: Iam ajn vi povas limigi, retrovi kaj forigi viajn informojn.

  1.   oscar diris

    Nu, mi testis ĝin kaj ĝi redonas nur 4-ciferan numeron, kiel pligrandigi ĝin?
    Tre interesa konsilo, dankon.

    1.    KZKG ^ Gaara diris

      Liveras numeron inter 0 kaj 32768, mi ne povis akiri pli grandajn nombrojn.

  2.   Josue diris

    kaj ĉu ĝi povas generi eksdecimalojn ????

  3.   korvo diris

    VARIABLE = "eoo $ (($ ALZANDA))"

    Tio funkcias sed ne estas optimuma, pro la simpla kialo, ke RANDOM estas variablo kaj vi povas fari:
    variablo = $ ALZANDA
    kaj jen ĝi! ne lanĉu eoon en fina aprte (kio vi faras)

    1.    KZKG ^ Gaara diris

      Jes, evidente ĝi atingeblas tiel ... la sola diferenco estas, ke poste, por vidi la nombron, kiun prenis la variablo (ĉar la uzanto ne estas divenanto), necesus fari eoon ... kaj finfine, kion mi faras ĉi tie, estas simple fari la e soon (por ke la uzanto vidu kian nombron estas prenita) de la komenco.

      Ĉu mi komprenigas min? 🙂

  4.   Wuilmer bolivar diris

    Alia maniero generi hazardan numeron, kvankam ĉi-foje ĝi estus ĉi tiu komando:

    dato "+% N" | tranĉi -c 9

    Tio donus al ni la daton en nanosekundoj kun 9 ciferoj. Se ni volas unu figuron, tiam vi metu la "tranĉi -c 9" (la lasta figuro ĉiam estas pli hazarda ĉar ĝi estas la plej malgranda el la nombro). Se ni volas 2 figurojn, tiam ni metu la "tranĉon - c 8,9". Se ni volas tri figurojn, tiam "tranĉu -c 7-9" (ni komencas uzi streketon).

    La sola malbona afero pri tio estas, se ni volas akiri multajn hazardajn nombrojn sinsekve en mallonga tempo, ĉar ĉi tio estas hazarda nombro surbaze de dato kun ĝia tempo. Tio estas, se ni faras for per tiu komando, ni povas vidi tion:

    $ por i en `seq 1 1 500`; daton "+% N"; farita

    ...
    ...
    ...

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

    ...
    ...
    ...

    Mi pensas ke estas klare ĉu ne? La figuroj maldekstre pli similas en mallonga tempo, kompreneble, kaj tiuj dekstre pli "hazardaj".

  5.   nigra okulo diris

    mmm…. Mi ŝatis ĝin, mi havas mini-skripton, ĝi estas pentrita por generi hazardajn nombrojn, dankon.

  6.   G. diris

    Ĝi servas .. kaj multe ..
    precipe se vi programas interfacon en bash kun pasvorto, sekureco, ktp, ktp, ktp haha.
    Bonega aprote.

  7.   José Antonio Sekvis Bent diris

    Saluton.
    Unue kompreneble gratulon pro ĉi tiu bonega retejo, kiun mi sekvas delonge.
    Kaj due, notu ĉi tiun eniron:
    Kiam limigado fariĝas tiel:

    eoo $ (($ RANDOM% 10))

    Fakte, kion vi ordonas al la interpretisto, tio estas, ke via generita nombro ĉiam estas la modulo% (resto de la divido) de la posta numero, en ĉi tiu ekzemplo, 10.
    Ĉiu nombro dividita per 10 neniam donos kiel restaĵon ion pli grandan ol la dividanto mem.
    La problemo estas, ke ĝi ankaŭ ne donos la saman nombron, ĉar divido per 0 ne estas logika por la interpretisto.

    Ĉi tio signifas, ke eoo $ (($ RANDOM% 10) donos rezultojn inter 0 kaj 9, sed neniam 10.
    La solvo al ĉi tiu konflikto estas aldoni unu al via limo, tiel ke la sama nombro falas ene de la hazarda gamo.

    eoo $ (($ RANDOM% 11))

    Ĉi tio donos rezultojn inter 0 kaj 10.

    Un saluto.

  8.   ammiel diris

    Saluton, mi ĵus konstruis ion tian, sed mi renkontis problemon.

    Mi volas fari 6 malsamajn nombrojn de 00 ĝis 45 sed ne ripeti ilin.

    eĥo $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($ HAZARDA% 46))

    EK: 17 33 16 36 45 27