(Bash): Kommando för att generera slumptal

Ibland programmerar vi in ​​ett skript Bash .... och vi behöver (av någon anledning) generera ett slumpmässigt tal.

För det kan du programmera en hel applikation (eller funktion ...) ja, men ... märkligt nog har vårt system redan gjort det 😀

Skriv följande i en terminal och tryck på [Stiga på]:

eko $ RANDOM

... ett nummer visas, de gör detsamma igen och ett annat nummer visas, och så vidare 🙂

Vad det gör är att visa dig ett slumpmässigt tal (valfritt) mellan 0 och 32768 (heltal, det vill säga utan komma).

Om du behöver ha ett slumpmässigt tal, men mellan 0 och ... låt oss säga 100, kan du sätta den gränsen på det 😀

echo $ (($ RANDOM% 100))

Samma, ett annat exempel ... om du vill att det ska vara ett tal mellan 0 och 29 skulle det vara:

echo $ (($ RANDOM% 29))

Förstås det inte? 😀

Om de använder det i ett bash-skript som de gör, för att tilldela det genererade värdet (ett slumptal) till en variabel skulle det vara:

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

Och ja det här är det, jag vet inte om dig ... men jag vet att det kommer att vara användbart för mig någon gång hahaha.

hälsningar


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   oscar sade

    Tja, jag har testat det och det returnerar bara ett fyrsiffrigt nummer, hur kan jag göra det större?
    Mycket intressant tips, tack.

    1.    KZKG ^ Gaara sade

      Returnerar ett tal mellan 0 och 32768, jag har inte lyckats få större siffror.

  2.   Josue sade

    och kan det generera execimaler ????

  3.   korp sade

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

    Det fungerar men är inte optimalt, av den enkla anledningen att RANDOM är en variabel och du kan göra:
    variabel = $ RANDOM
    och det är allt! kör inte eko i en terminal aprte (vilket är vad du gör)

    1.    KZKG ^ Gaara sade

      Ja, uppenbarligen kan det uppnås så här ... den enda skillnaden är att det senare skulle behövas ett eko för att se antalet som variabeln tog (eftersom användaren inte är en gissning). och i slutändan, vad jag gör här är helt enkelt att göra ekot (så att användaren ser vilket nummer som tas) från början.

      Gör jag mig förstådd? 🙂

  4.   Wuilmer bolivar sade

    Ett annat sätt att generera ett slumptal, även om det här gången skulle vara det här kommandot:

    datum "+% N" | skär -c 9

    Det skulle ge oss datumet i nanosekunder med 9 siffror. Om vi ​​vill ha en enskild siffra sätter du "klipp -c 9" (den sista siffran är alltid mer slumpmässig eftersom den är den minsta av siffrorna). Om vi ​​vill ha två siffror lägger vi "cut - c 2". Om vi ​​vill ha tre siffror så "klipp -c 8,9-7" (vi börjar använda bindestrecket).

    Det enda dåliga med detta är om vi vill få många slumpmässiga siffror i rad på kort tid, för det här är ett slumptal baserat på ett datum med dess tid. Det vill säga om vi gör ett för med det kommandot kan vi se att:

    $ för i i "seq 1 1 500"; gör datum "+% N"; Gjort

    .
    .
    .

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

    .
    .
    .

    Jag tycker att det är klart, eller hur? Siffrorna till vänster är naturligtvis mer lika på kort tid, och de till höger är mer ”slumpmässiga”.

  5.   svart öga sade

    mmm…. Jag gillade det, jag har ett miniskript som är målat för att generera slumptal, tack.

  6.   G. sade

    Det tjänar .. och mycket ..
    speciellt om du programmerar ett gränssnitt i bash med lösenord, säkerhet, etc, etc, etc haha.
    Utmärkt aprote.

  7.   José Antonio följde Bent sade

    Hej.
    Först och främst, naturligtvis, gratulationer till den här utmärkta webbplatsen, som jag har följt länge.
    Och för det andra, gör en liten anteckning till denna post:
    När en gräns görs så här:

    echo $ (($ RANDOM% 10))

    Egentligen, vad du beställer tolk är att ditt genererade antal alltid är modul% (resten av uppdelningen) för det efterföljande numret, i detta exempel, 10.
    Varje nummer dividerat med 10 kommer aldrig att ge en återstod något större än delaren själv.
    Problemet är att det inte kommer att ge samma nummer heller, eftersom en division med 0 inte är logisk för tolk.

    Detta innebär att echo $ (($ RANDOM% 10) ger resultat mellan 0 och 9, men aldrig 10.
    Lösningen på denna konflikt är att lägga till en till din gräns, så att samma antal faller inom slumpmässigt intervall.

    echo $ (($ RANDOM% 11))

    Detta ger resultat mellan 0 och 10.

    En hälsning.

  8.   amiel sade

    Hej, jag byggde precis något sånt här, men jag stötte på ett problem.

    Jag vill göra 6 olika nummer från 00 till 45 men inte upprepa dem.

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

    EX: 17 33 16 36 45 27