(Bash): Kommando for å generere tilfeldig nummer

Noen ganger programmerer vi noe skript i Bash …. og vi trenger (av en eller annen grunn) å generere et tilfeldig tall.

For det kan du programmere en hel applikasjon (eller funksjon ...) ja, men ... merkelig har systemet vårt allerede gjort det 😀

Skriv inn følgende i en terminal og trykk [Tast inn]:

ekko $ RANDOM

... et tall vil vises, de gjør det samme igjen og et annet nummer vises, og så videre 🙂

Hva det gjør er å vise deg et tilfeldig tall (hvilket som helst) mellom 0 og 32768 (heltall, det vil si uten komma).

Hvis du trenger det for å være et tilfeldig tall, men mellom 0 og ... la oss si 100, kan du sette den grensen på det 😀

ekko $ (($ RANDOM% 100))

På samme måte, et annet eksempel ... hvis du vil at det skal være et tall mellom 0 og 29, vil det være:

ekko $ (($ RANDOM% 29))

Er det forstått ikke? 😀

Hvis de bruker det i et bash-skript de gjør, for å tildele den genererte verdien (et tilfeldig tall) til en variabel, vil det være:

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

Vel, dette er det, jeg vet ikke om deg ... men jeg vet at det vil være nyttig for meg på et tidspunkt hahaha.

Hilsen


Innholdet i artikkelen følger våre prinsipper for redaksjonell etikk. Klikk på for å rapportere en feil her.

9 kommentarer, legg igjen dine

Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   oscar sa

    Vel, jeg har testet det, og det returnerer bare et firesifret nummer, hvordan kan jeg gjøre det større?
    Veldig interessant tips, takk.

    1.    KZKG ^ Gaara sa

      Returnerer et tall mellom 0 og 32768, jeg har ikke klart å få større tall.

  2.   Josue sa

    og kan det generere exadimaler ????

  3.   ravn sa

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

    Det fungerer, men er ikke optimalt, av den enkle grunnen til at RANDOM er en variabel, og du kan gjøre:
    variabel = $ RANDOM
    og det er det! ikke kjør ekko i en terminal aprte (det er det du gjør)

    1.    KZKG ^ Gaara sa

      Ja, tydeligvis kan det oppnås slik ... den eneste forskjellen er at det senere, for å se tallet som variabelen tok (siden brukeren ikke er en gjetter), ville være nødvendig å gjøre et ekko…. og til slutt er det jeg gjør her ganske enkelt å gjøre ekkoet (slik at brukeren kan se hvilket nummer som blir tatt) fra begynnelsen.

      Gjør jeg meg forstått? 🙂

  4.   Wuilmer bolivar sa

    En annen måte å generere et tilfeldig tall, selv om det denne gangen vil være denne kommandoen:

    dato "+% N" | kutt -c 9

    Det vil gi oss datoen i nanosekunder med 9 sifre. Hvis vi vil ha en enkelt figur, setter du "cut -c 9" (den siste figuren er alltid mer tilfeldig fordi den er det minste av tallet). Hvis vi vil ha 2 figurer, setter vi "cut - c 8,9". Hvis vi vil ha tre figurer, så "klipp -c 7-9" (vi begynner å bruke bindestreket).

    Det eneste dårlige med dette er hvis vi ønsker å få mange tilfeldige tall på rad på kort tid, for dette er et tilfeldig tall basert på en dato med tiden. Det vil si at hvis vi lager en for med den kommandoen, kan vi se at:

    $ for i i `seq 1 1 500`; gjør dato "+% N"; ferdig

    ...
    ...
    ...

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

    ...
    ...
    ...

    Jeg tror det er klart ikke sant? Figurene til venstre er selvfølgelig mer like på kort tid, og de til høyre er mer "tilfeldige".

  5.   blåveis sa

    mmm…. Jeg likte det, jeg har et mini-skript som er igjen for å generere tilfeldige tall, takk.

  6.   G. sa

    Det serverer .. og mye ..
    spesielt hvis du programmerer et grensesnitt i bash med passord, sikkerhet, etc, etc, etc haha.
    Utmerket aprote.

  7.   José Antonio fulgte Bent sa

    Hei.
    Først av alt, selvfølgelig, gratulerer med denne utmerkede nettsiden, som jeg har fulgt lenge.
    Og for det andre, gjør et lite notat til denne oppføringen:
    Når en grense gjøres slik:

    ekko $ (($ RANDOM% 10))

    Det du bestiller tolk er faktisk at det genererte tallet alltid er modul% (resten av delingen) av det påfølgende nummeret, i dette eksemplet, 10.
    Ethvert tall delt på 10 vil aldri gi noe som er større enn deleren selv.
    Problemet er at det ikke vil gi det samme tallet heller, fordi en divisjon med 0 ikke er logisk for tolken.

    Dette betyr at ekko $ (($ RANDOM% 10) vil gi resultater mellom 0 og 9, men aldri 10.
    Løsningen på denne konflikten er å legge en til grensen din, slik at det samme tallet faller innenfor det tilfeldige området.

    ekko $ (($ RANDOM% 11))

    Dette vil gi resultater mellom 0 og 10.

    En hilsen.