(Bash): opdracht om een ​​willekeurig getal te genereren

Soms programmeren we een script in Slaan …. en we moeten (om de een of andere reden) een willekeurig getal genereren.

Daarvoor kun je een hele applicatie (of functie ...) programmeren ja, maar ... merkwaardig genoeg heeft ons systeem dat al gedaan 😀

Typ het volgende in een terminal en druk op [Enter]:

echo $ RANDOM

... er verschijnt een nummer, ze doen hetzelfde opnieuw en een ander nummer verschijnt, enzovoort 🙂

Wat het doet, is je een willekeurig getal (willekeurig) tussen 0 en 32768 (geheel getal, dat wil zeggen zonder komma).

Als het een willekeurig getal moet zijn, maar tussen 0 en ... laten we zeggen 100, kun je die limiet erop zetten 😀

echo $ (($ RANDOM% 100))

Hetzelfde, nog een voorbeeld ... als je wilt dat het een getal tussen 0 en 29 is, zou het zijn:

echo $ (($ RANDOM% 29))

Is het niet begrepen? 😀

Als ze het zullen gebruiken in een bash-script dat ze aan het doen zijn, om de gegenereerde waarde (een willekeurig getal) toe te wijzen aan een variabele, zou het zijn:

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

Nou, dit is het, ik weet niets over jou ... maar ik weet dat het op een gegeven moment nuttig voor me zal zijn hahaha.

groeten


10 reacties, laat de jouwe achter

Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   Oscar zei

    Nou, ik heb het getest en het geeft alleen een 4-cijferig nummer terug, hoe maak ik het groter?
    Zeer interessante tip, bedankt.

    1.    KZKG ^ Gaara zei

      Retourneert een getal tussen 0 en 32768, ik heb geen grotere getallen kunnen krijgen.

  2.   Josue zei

    en kan het exadecimalen genereren ????

  3.   raaf zei

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

    Dat werkt maar is niet optimaal, om de simpele reden dat RANDOM een variabele is en je kunt doen:
    variabele = $ RANDOM
    en dat is het! voer geen echo uit in een terminal aprte (dat is wat je doet)

    1.    KZKG ^ Gaara zei

      Ja, het kan natuurlijk zo worden bereikt ... het enige verschil is dat het later, om het getal te zien dat de variabele heeft aangenomen (aangezien de gebruiker geen gokker is), nodig zou zijn om een ​​echo uit te voeren .... en uiteindelijk doe ik hier gewoon de echo (zodat de gebruiker kan zien welk nummer wordt gebruikt) vanaf het begin.

      Maak ik mezelf verstaanbaar? 🙂

  4.   Wuilmer bolivar zei

    Een andere manier om een ​​willekeurig getal te genereren, hoewel dit deze keer dit commando zou zijn:

    datum "+% N" | knippen -c 9

    Dat zou ons de datum in nanoseconden met 9 cijfers geven. Als we een enkel cijfer willen, plaats je de "cut -c 9" (het laatste cijfer is altijd meer willekeurig omdat dit het kleinste van het getal is). Als we 2 cijfers willen, plaatsen we de "cut - c 8,9". Als we drie cijfers willen, dan "cut -c 7-9" (we beginnen het koppelteken te gebruiken).

    Het enige vervelende hieraan is als we in korte tijd veel willekeurige getallen achter elkaar willen krijgen, omdat dit een willekeurig getal is op basis van een datum met zijn tijd. Dat wil zeggen, als we een voor maken met dat commando, kunnen we zien dat:

    $ voor i in `seq 1 1 500`; datum doen "+% N"; gedaan

    ...
    ...
    ...

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

    ...
    ...
    ...

    Ik denk dat het duidelijk is, toch? De cijfers aan de linkerkant lijken in korte tijd natuurlijk meer op elkaar en die aan de rechterkant zijn meer 'willekeurig'.

  5.   zwart oog zei

    mmm…. Ik vond het leuk, ik heb een miniscript dat willekeurige getallen genereert, bedankt.

  6.   G. zei

    Het dient ... en veel ...
    vooral als je een interface in bash programmeert met wachtwoord, beveiliging, etc, etc, etc haha.
    Uitstekende aprote.

  7.   José Antonio volgde Bent zei

    Hey.
    Allereerst natuurlijk gefeliciteerd met deze uitstekende website, die ik al een hele tijd volg.
    En ten tweede, maak een kleine notitie bij dit bericht:
    Als het beperken als volgt wordt gedaan:

    echo $ (($ RANDOM% 10))

    Wat je eigenlijk de tolk bestelt, is dat je gegenereerde getal altijd de modulus% (rest van de deling) is van het volgende getal, in dit voorbeeld 10.
    Elk getal gedeeld door 10 zal nooit als rest iets opleveren dat groter is dan de deler zelf.
    Het probleem is dat het ook niet hetzelfde nummer zal geven, want delen door 0 is niet logisch voor de tolk.

    Dit betekent dat echo $ (($ RANDOM% 10) resultaten geeft tussen 0 en 9, maar nooit 10.
    De oplossing voor dit conflict is om er een aan uw limiet toe te voegen, zodat hetzelfde nummer binnen het willekeurige bereik valt.

    echo $ (($ RANDOM% 11))

    Dit levert resultaten op tussen 0 en 10.

    Een groet.

  8.   amiel zei

    Hallo, ik was net zoiets aan het bouwen, maar ik liep tegen een probleem aan.

    Ik wil 6 verschillende getallen maken van 00 tot 45 maar ze niet herhalen.

    echo $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($ WILLEKEURIG%46))

    Vb: 17 33 16 36 45 27