(Bash): Polecenie generowania liczby losowej

Czasami programujemy jakiś skrypt w Bash … i musimy (z jakiegoś powodu) wygenerować jakąś liczbę losową.

W tym celu możesz zaprogramować całą aplikację (lub funkcję ...) tak, ale ... co ciekawe, nasz system już to zrobił

W terminalu wpisz następujące polecenie i naciśnij [Wchodzić]:

echo $ LOSOWO

... pojawi się liczba, robią to samo i pojawia się inny numer, i tak dalej 🙂

To, co robi, to pokazuje losową liczbę (dowolną) z zakresu od 0 do 32768 (liczba całkowita, czyli bez przecinka).

Jeśli chcesz, aby była to liczba losowa, ale między 0 a ... powiedzmy 100, możesz ustawić ten limit 😀

echo $ (($ RANDOM% 100))

To samo, inny przykład ... jeśli chcesz, aby była to liczba od 0 do 29, będzie to:

echo $ (($ RANDOM% 29))

Czy to zrozumiałe? 😀

Jeśli użyją go w skrypcie bash, który robią, aby przypisać wygenerowaną wartość (liczbę losową) do zmiennej, będzie to:

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

Cóż, to jest to, nie wiem jak ty ... ale wiem, że kiedyś mi się przyda hahaha.

pozdrowienia


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   Oscar powiedział

    Cóż, testowałem go i zwraca tylko 4-cyfrową liczbę, jak mogę ją powiększyć?
    Bardzo interesująca wskazówka, dziękuję.

    1.    KZKG ^ Gaara powiedział

      Zwraca liczbę z przedziału od 0 do 32768, nie udało mi się uzyskać większych liczb.

  2.   josue powiedział

    i czy może generować exadecimals ????

  3.   kruk powiedział

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

    To działa, ale nie jest optymalne, z tego prostego powodu, że RANDOM jest zmienną i możesz:
    zmienna = $ LOSOWO
    i to wszystko! nie uruchamiaj echo w terminalu aprte (co robisz)

    1.    KZKG ^ Gaara powiedział

      Tak, oczywiście można to osiągnąć w ten sposób… jedyną różnicą jest to, że później, aby zobaczyć liczbę, jaką zajęła zmienna (ponieważ użytkownik nie jest zgadywaczem), należałoby wykonać echo…. a na końcu to, co tutaj robię, to po prostu robię echo (aby użytkownik widział, jaka liczba jest pobierana) od początku.

      Czy daję się zrozumieć? 🙂

  4.   Wuilmer bolivar powiedział

    Innym sposobem na wygenerowanie liczby losowej, chociaż tym razem byłoby to polecenie:

    data "+% N" | cięcie -c 9

    To dałoby nam datę w nanosekundach z 9 cyframi. Jeśli chcemy pojedynczej cyfry, wstawiamy „cut -c 9” (ostatnia cyfra jest zawsze bardziej losowa, ponieważ jest najmniejszą z liczby). Jeśli chcemy 2 cyfry, wstawiamy „cięcie - c 8,9”. Jeśli chcemy mieć trzy cyfry, to „wytnij -c 7-9” (zaczynamy od myślnika).

    Jedyną złą rzeczą jest to, że chcemy uzyskać wiele liczb losowych z rzędu w krótkim czasie, ponieważ jest to liczba losowa oparta na dacie i jej godzinie. To znaczy, jeśli zrobimy for za pomocą tego polecenia, zobaczymy, że:

    $ for i w „seq 1 1 500”; do date "+% N"; Gotowe

    ...
    ...
    ...

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

    ...
    ...
    ...

    Myślę, że to jasne, prawda? Liczby po lewej są oczywiście bardziej podobne w krótkim czasie, a te po prawej są bardziej „przypadkowe”.

  5.   czarne oko powiedział

    mmm…. Podobało mi się, mam mini skrypt, jest namalowany w celu generowania liczb losowych, dzięki.

  6.   G. powiedział

    Służy ... i bardzo ...
    zwłaszcza jeśli programujesz interfejs w bashu z hasłem, zabezpieczeniami itp., itd. haha.
    Znakomicie napisał.

  7.   José Antonio poszedł za Bentem powiedział

    Hey.
    Przede wszystkim oczywiście gratuluję tej znakomitej strony internetowej, którą śledzę od dłuższego czasu.
    Po drugie, zrób małą notatkę do tego wpisu:
    Kiedy ograniczanie odbywa się w następujący sposób:

    echo $ (($ RANDOM% 10))

    Właściwie to, co zamawiasz tłumaczowi, polega na tym, że wygenerowana liczba jest zawsze modułem% (pozostałą częścią dzielenia) kolejnej liczby, w tym przykładzie 10.
    Każda liczba podzielona przez 10 nigdy nie da jako reszty czegoś większego niż sam dzielnik.
    Problem w tym, że nie da tej samej liczby, ponieważ dzielenie przez 0 nie jest logiczne dla tłumacza.

    Oznacza to, że echo $ (($ RANDOM% 10) da wyniki od 0 do 9, ale nigdy 10.
    Rozwiązaniem tego konfliktu jest dodanie jednego do limitu, tak aby ta sama liczba mieściła się w losowym zakresie.

    echo $ (($ RANDOM% 11))

    Daje to wyniki od 0 do 10.

    Pozdrowienia.

  8.   amielu powiedział

    Witam, właśnie budowałem coś takiego, ale natknąłem się na problem.

    Chcę zrobić 6 różnych liczb od 00 do 45, ale ich nie powtarzać.

    echo $(($LOSOWY%46)) $(($LOSOWY%46)) $(($LOSOWY%46)) $(($LOSOWY%46)) $(($LOSOWY%46)) $(($ LOSOWO%46))

    Np.: 17 33 16 36 45 27