(Bash): Каманда для генерацыі выпадковых лікаў

Часам мы праграмуем нейкі сцэнар Біць ... і нам трэба (па нейкіх прычынах) стварыць нейкую выпадковую лічбу.

Для гэтага вы можаце запраграмаваць цэлае прыкладанне (альбо функцыю ...) так, але ... цікава, наша сістэма гэта ўжо зрабіла 😀

У тэрмінале набярыце наступнае і націсніце [Увод]:

рэха $ РАНДОМ

... з'явіцца нумар, яны паўтараюць тое ж самае, з'явіцца іншы нумар і г.д. 🙂

Ён паказвае выпадковы лік (любы) ад 0 да 32768 (цэлае лік, гэта значыць без коскі).

Калі вам трэба, каб гэта быў выпадковы лік, але ад 0 да ... скажам, 100, вы можаце паставіць гэта абмежаванне 😀

echo $ (($ RANDOM% 100))

Тое самае, яшчэ адзін прыклад ... калі вы хочаце, каб гэта быў лік ад 0 да 29, гэта будзе:

echo $ (($ RANDOM% 29))

Гэта не зразумела? 😀

Калі яны будуць выкарыстоўваць яго ў сцэнарыі bash, які яны робяць, каб прысвоіць згенераванае значэнне (выпадковае лік) зменнай, гэта будзе:

ЗМЯНІМЫ = `echo $ (($ RANDOM))`

Ну, гэта ўсё, я не ведаю пра вас ... але я ведаю, што гэта мне спатрэбіцца ў нейкі момант ха-ха-ха.

прывітанне


Змест артыкула адпавядае нашым прынцыпам рэдакцыйная этыка. Каб паведаміць пра памылку, націсніце тут.

9 каментарыяў, пакіньце свой

Пакіньце свой каментар

Ваш электронны адрас не будзе апублікаваны. Абавязковыя для запаўнення палі пазначаныя *

*

*

  1. Адказны за дадзеныя: Мігель Анхель Гатон
  2. Прызначэнне дадзеных: Кантроль спаму, кіраванне каментарыямі.
  3. Легітымнасць: ваша згода
  4. Перадача дадзеных: Дадзеныя не будуць перададзены трэцім асобам, за выключэннем юрыдычных абавязкаў.
  5. Захоўванне дадзеных: База дадзеных, размешчаная Occentus Networks (ЕС)
  6. Правы: у любы час вы можаце абмежаваць, аднавіць і выдаліць сваю інфармацыю.

  1.   Оскар сказаў

    Ну, я тэставаў яго, і ён вяртае толькі 4-значны нумар, як я магу зрабіць яго большым?
    Вельмі цікавы савет, дзякуй.

    1.    KZKG ^ Гаара сказаў

      Вяртае лік ад 0 да 32768, я не змог атрымаць большыя лічбы.

  2.   Josue сказаў

    і ці можа гэта генерыраваць exadecimals ????

  3.   крумкач сказаў

    ЗМЯНІМЫ = `echo $ (($ RANDOM))`

    Гэта працуе, але не з'яўляецца аптымальным, па той простай прычыне, што RANDOM з'яўляецца зменнай, і вы можаце зрабіць:
    зменная = $ СЛУЧАЙНА
    і ўсё! не запускаць рэха ў тэрмінале aprte (што вы і робіце)

    1.    KZKG ^ Гаара сказаў

      Так, відавочна, што гэта можа быць дасягнута такім чынам ... адзіная розніца ў тым, што пазней, каб убачыць лік, які прыняла зменная (бо карыстальнік не ўгадвае), трэба было б зрабіць рэха ... і ў рэшце рэшт, тое, што я раблю тут, гэта проста рабіць рэха (каб карыстальнік бачыў, які нумар узяты) з самага пачатку.

      Ці даю я зразумець? 🙂

  4.   Вуільмер Балівар сказаў

    Іншы спосаб генерацыі выпадковага ліку, хаця на гэты раз гэта будзе наступная каманда:

    дата "+% N" | выразаць -c 9

    Гэта дасць нам дату ў нанасекундах з 9 лічбаў. Калі нам патрэбна адназначная лічба, вы ставіце "выразаць -c 9" (апошняя лічба заўсёды больш выпадковая, таму што яна самая маленькая з ліку). Калі мы хочам 2 лічбы, мы ставім "разрэз - c 8,9". Калі мы хочам тры лічбы, тады "выразаем -c 7-9" (мы пачынаем выкарыстоўваць злучок).

    Адзінае дрэннае ў гэтым, калі мы хочам атрымаць шмат выпадковых лікаў запар за кароткі час, таму што гэта выпадковае лік, заснаванае на даце са сваім часам. Гэта значыць, калі мы зробім для з гэтай камандай, мы можам бачыць, што:

    $ за я ў `наступных 1 1`; дата даты "+% N"; зроблена

    ...
    ...
    ...

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

    ...
    ...
    ...

    Я думаю, гэта зразумела, праўда? Лічбы злева, вядома, больш падобныя за кароткі прамежак часу, а справа - больш "выпадкова".

  5.   Сіняк пад вокам сказаў

    ммм ... Мне спадабалася, у мяне ёсць міні-сцэнар, ён намаляваны, каб генераваць выпадковыя лічбы, дзякуй.

  6.   G. сказаў

    Гэта служыць .. і многаму ..
    асабліва калі вы праграмуеце інтэрфейс у bash з паролем, бяспекай і г.д., і г.д., і г.д. ха-ха.
    Выдатны атэстат.

  7.   Хасэ Антоніа ішоў за Сагнутым сказаў

    Гэй.
    Перш за ўсё, вядома, віншую з гэтым цудоўным сайтам, за якім я сачу даўно.
    А па-другое, зрабіце невялікую заўвагу да гэтага запісу:
    Калі абмежаванне робіцца так:

    echo $ (($ RANDOM% 10))

    Уласна кажучы, вы заказваеце інтэрпрэтатару тое, што ваш згенераваны лік заўсёды з'яўляецца модулем% (астатняя частка дзялення) наступнага ліку, у гэтым прыкладзе 10.
    Любое лік, падзеленае на 10, ніколі не дасць як астатак нешта большае, чым сам дзельнік.
    Праблема ў тым, што ён таксама не дасць аднолькавага ліку, таму што дзяленне на 0 не з'яўляецца лагічным для перакладчыка.

    Гэта азначае, што echo $ (($ RANDOM% 10) дасць вынікі ад 0 да 9, але ніколі 10.
    Рашэнне гэтага канфлікту - дадаць яго да свайго ліміту, каб аднолькавая колькасць трапляла ў выпадковы дыяпазон.

    echo $ (($ RANDOM% 11))

    Гэта дасць вынікі ад 0 да 10.

    Прывітанне.