Kaip nustatyti „Bash“ kintamuosius į atsitiktinius skaičius



Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas

Bash eilutėje galite lengvai sugeneruoti atsitiktinį skaičių, kurį galėsite naudoti norėdami nustatyti minėtą skaičių kaip kintamąjį. Tai naudinga viskam, pradedant tam tikrų tipų scenarijų rašymu ir baigiant stalo žaidimų nuotykiais. Nesvarbu, ar rašote D&D kampaniją, ar kuriate įrankį galinga bash kalba, paprastai galite išsisukti su viena kodo eilute. Tai taip pat yra labai naudinga priemonė bandant iš anksto atlikti tam tikrus saugumo patikrinimus, tačiau nepamirškite, kad geri krekeriai gali apeiti šiuos paprastus skaičių generatorius. Jie vis dar naudingi generuojant tam tikrų tipų slaptažodžius ir kodus, kurie vis tiek gali padėti užtikrinti saugumą.



Tam yra keli skirtingi būdai, ir ne kiekviena technika tinka kiekvienai situacijai, todėl mes padarėme viską, kad pažvelgtume į kiekvieną būdą ir išbandytume, ar jis veikia. Tam reikės dirbti iš terminalo, todėl naudokite „Ctrl“ + „Alt“ + T arba „Super“ („Windows“) + T, kad atidarytumėte grafinį terminalą, pradėkite jį įvesdami terminalą brūkšnyje, pasirinkite jį iš programos arba „Whisker“ ir „System Tools“ meniu arba rimtai eikite į virtualų terminalą naudodami „Ctrl“, „Alt“ ir klavišą tarp F1 ir F6.



1 metodas: viso atsitiktinio baito parinkimas

Galite sukurti atsitiktinį skaičių nuo 1 iki 256, vykdydami šią komandą tiesiai iš „bash“ eilutės:



iš -An-N1 -tu1 / dev / urandom

Nors kartais galite pamatyti, kad ši komanda nurodoma / dev / random, o ne / dev / urandom, tikriausiai nenorėsite paleisti tokiu būdu. Tai gali netyčia apiplėšti kitas programas, kad jos negalėtų naudoti atsitiktinių sėklų generatoriaus. Vykdę programą ir gavę numerį, galite būti tikri, kad ji veiks taip pat:



ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom)))

Tai nustatys kintamąjį „ranNum“ į skaičių nuo 1 iki 256, pasirinktą jį paleidus. Galite paleisti jį iš komandinės eilutės arba iš scenarijaus vidaus ir tai turėtų veikti bet kuriuo atveju. Atminkite, kad „ranNum“ galite pakeisti bet kuriuo galiojančiu kintamojo pavadinimu.

2 metodas: kintamojo nustatymas pagal atsitiktinį skaičių nuo 1 iki visko

Galite paleisti echo $ [RANDOM% 40 + 1] iš komandinės eilutės, kad atsitiktinį skaičių nuo 1 iki 40 nusiųstumėte tiesiai į standartinę išvestį, tačiau komandoje esančius 40 taip pat galite pakeisti praktiškai bet kokiu skaičiumi. Galų gale jūsų pagrindinės mašinos architektūra baigsis skaitmenimis, o gal ir bus, bet abejotina, ar jums vis tiek reikia tokio didelio skaičiaus.

Tarkime, kad norite sukurti atsitiktinį skaičių nuo 1 iki 10 pagal savo kintamosios konfigūraciją. Galite paleisti:

ranNum = $ [RANDOM% 10 + 1]

Atminkite, kad 10 galite pakeisti norima didžiausia verte. Ši vertė yra įtraukianti, tai reiškia, kad 10 yra galiojantis grąžintas skaičius. Jei norėtumėte ją sumažinti vienu, tada tiesiog nustatykite 9 reikšmę, o ne naudokite C arba C ++ stiliaus -1 matematiką. Tai nėra būtina nustatant kintamąjį naudojant šį metodą, ir jie iš tikrųjų sugeneruos netikėtus rezultatus pridėdami arba atimdami skaitmenis.

3 metodas: vieno atsitiktinio bitų pasirinkimas

Jei jums reikia nustatyti, kad kintamasis būtų atsitiktinis, lygus nuliui arba vienam, tada galite pakeisti ankstesnį kodą taip:

ranNum = $ (($ (od -An -N1 -i / dev / urandom)% 2))

Šis kodas nustatys „ranNum“ į 1 arba 0, priklausomai nuo to, ar skaičiai, kuriuos jis atrinko iš / dev / urandom byla buvo lygi ar nelyginė. Tai gali būti naudinga, jei jums reikia nustatyti paprastą taip arba ne lygtį vienai ar kitai būsenai.

Jei tai nėra pakankamai atsitiktinis dalykas, kurį dirbate, galite gauti šiek tiek atsitiktinį skaičių, paskambinę į / proc / sys / kernel / random katalogą su:

ranNum = $ ((0x $ (cut -c1-1 / proc / sys / kernel / random / uuid)% 2))

Tačiau dar kartą tai nustatys tik kintamąjį į 1 arba 0, kuris puikiai tinka dvejetainiai logikai, bet nėra toks naudingas, kai jums gali prireikti ilgesnio skaičiaus. Tačiau jei norite, galite naudoti bet kurią iš šių eilučių „bash“ scenarijuje. Šis antrasis variantas iš tikrųjų gali būti geresnis tais atvejais, kai pirmasis taip pat nepavyksta

4 metodas: sukurkite „bash“ scenarijus, kad grąžintumėte atsitiktinius skaičius

Jei norite turėti patogų įrankį atsitiktiniam skaičiui generuoti, bet kada galite sukurti komandinės eilutės scenarijų. Tai naudoja tik standartinę „bash“ kalbą, kurią turi dauguma šiuolaikinių „Linux“ raginimų, taigi beveik bet koks šiuolaikinis „Linux“ paskirstymas ir nemažai BSD pagrįstų operacinių sistemų turėtų tai tvarkyti puikiai. Prieš eidami toliau, galbūt norėsite naudoti „cd ~ / .local / bin“, kad įsitikintumėte, jog scenarijus bus vietoje, kurią galėsite vykdyti bet kur.

Norėdami pradėti, įveskite nano random arba vi random, nors, jei norite, scenarijui galite naudoti kitą pavadinimą. Jei norite, taip pat galite naudoti kitą teksto rengyklę. Tarkime, kad norite sukurti tokį, kuris, įvedęs komandinėje eilutėje, grąžintų 1 arba 0. Įveskite šiuos duomenis ir paspauskite Ctrl + O, kad išsaugotumėte, jei naudojate „nano“:

#! / bin / bash ranNum = $ (($ RANDOM% 2)) echo $ ranNum

Įveskite Ctrl + X, kad išeitumėte iš teksto rengyklės, ir grįžę į komandinę eilutę naudokite chmod + x random, kad scenarijus būtų naudojamas. Be abejo, vietoj „ranNum = $ (($ RANDOM% 2)), kad galėtumėte tiksliai kontroliuoti, kokio numerio norite atgal. Tarkime, kad norėjote reguliariai pasirinkti skaičių nuo 1 iki 50. Pakeiskite „bash“ scenarijaus tekstą į:

#! / bin / bash ranNum = $ [RANDOM% 50 + 1] echo $ ranNum

Dabar galite lengvai paleisti jį iš komandinės eilutės įvesdami atsitiktinį, kai tik norite sugeneruoti atsitiktinį skaičių.

4 minutes perskaityta