Ndonjëherë, ne jemi duke programuar disa skenarë në Përplas .... dhe ne kemi nevojë (për ndonjë arsye) për të gjeneruar një numër të rastit.
Për këtë ju mund të programoni një aplikacion të tërë (ose funksion ...) po, por ... me interes, sistemi ynë tashmë e ka bërë atë that
Në një terminal, shtypni sa vijon dhe shtypni [Hyni]:
jehonë $ RANDOM
... do të shfaqet një numër, ata bëjnë përsëri të njëjtën gjë dhe shfaqet një numër tjetër, e kështu me radhë
Ajo që bën është t'ju tregojë një numër të rastësishëm (ndonjë) midis 0 dhe 32768 (numër i plotë, domethënë pa presje).
Nëse keni nevojë që të jetë një numër i rastësishëm, por midis 0 dhe ... le të themi 100, mund ta vendosni atë limit it
jehonë $ (($ RANDOM% 100))
I njëjti, një shembull tjetër ... nëse doni që të jetë një numër midis 0 dhe 29 do të ishte:
jehonë $ (($ RANDOM% 29))
A kuptohet jo? 😀
Nëse ata do ta përdorin atë në një skenar bash që po bëjnë, për të caktuar vlerën e gjeneruar (një numër të rastësishëm) për një ndryshore do të ishte:
VARIABLE = `jehonë $ (($ RANDOM))
Dhe mirë kjo është ajo, unë nuk di për ty ... por unë e di që do të jetë e dobishme për mua në një moment hahaha.
të fala
Epo, unë e kam testuar atë dhe ai kthen vetëm një numër 4-shifror, si ta bëjmë atë më të madh?
Këshillë shumë interesante, faleminderit.
Kthen një numër midis 0 dhe 32768, nuk kam qenë në gjendje të marr numra më të mëdhenj.
dhe a mund të gjenerojë exadecimals ????
VARIABLE = `jehonë $ (($ RANDOM))
Kjo funksionon por nuk është optimale, për arsyen e thjeshtë se RANDOM është një variabël dhe ju mund të bëni:
ndryshore = $ RANDOM
dhe kjo eshte! mos lësho jehonë në një terminal aprte (që është ajo që po bën)
Po, padyshim që mund të arrihet kështu ... ndryshimi i vetëm është se më vonë, për të parë numrin që mori ndryshorja (pasi përdoruesi nuk është një hamendësues), do të ishte e nevojshme të bëhej një jehonë. dhe në fund, ajo që bëj këtu është thjesht të bëj jehonë (në mënyrë që përdoruesi të shohë se çfarë numri është marrë) që nga fillimi.
A e kuptoj veten time? 🙂
Një mënyrë tjetër për të gjeneruar një numër të rastësishëm, edhe pse këtë herë do të ishte kjo komandë:
data "+% N" | prerë -c 9
Kjo do të na jepte datën në nanosekonda me 9 shifra. Nëse duam një figurë të vetme, atëherë ju vendosni "cut -c 9" (figura e fundit është gjithmonë më e rastësishme, sepse është më e vogla e numrit). Nëse duam 2 figura, atëherë vendosim "prerja - c 8,9". Nëse duam tre figura atëherë "prerë -c 7-9" (fillojmë të përdorim vizën).
E vetmja gjë e keqe në lidhje me këtë është nëse duam të marrim shumë numra të rastit me radhë brenda një kohe të shkurtër, sepse ky është një numër i rastësishëm bazuar në një datë me kohën e saj. Kjo do të thotë, nëse bëjmë një ndihmë me atë komandë mund të shohim se:
$ për i në `seq 1 1 500`; bëj datën "+% N"; bërë
...
...
...
308311367
310807595
313273093
315725181
318186139
320671403
323360117
325733353
328335462
330694870
333259893
335858999
338375622
340798446
...
...
...
Unë mendoj se është e qartë apo jo? Shifrat në të majtë janë më të ngjashme në një hapësirë të shkurtër kohe, natyrisht, dhe ato në të djathtë janë më "të rastit".
mmm Më pëlqeu, kam një mini skenar që ka mbetur për të gjeneruar numra të rastësishëm, falënderime.
Shërben .. dhe shumë ..
sidomos nëse jeni duke programuar një ndërfaqe në bash me fjalëkalim, siguri, etj, etj, etj haha.
Aprote e shkelqyer.
Hey.
Së pari, sigurisht, urime për këtë faqe të shkëlqyer, të cilën unë po e ndjek për një kohë të gjatë.
Dhe së dyti, bëni një shënim të vogël për këtë hyrje:
Kur një kufi bëhet si ky:
jehonë $ (($ RANDOM% 10))
Në të vërtetë, ajo që ju porosisni përkthyesin është se numri juaj i gjeneruar është gjithmonë moduli% (pjesa e mbetur e pjesëtimit) të numrit pasues, në këtë shembull, 10.
Çdo numër i ndarë me 10 nuk do t'i japë kurrë një mbetje diçka më të madhe se vetë pjesëtuesi.
Problemi është që ai nuk do të japë të njëjtin numër, sepse një ndarje me 0 nuk është logjike për përkthyesin.
Kjo do të thotë që jehona $ (($ RANDOM% 10) do të japë rezultate midis 0 dhe 9, por kurrë 10.
Zgjidhja e këtij konflikti është të shtoni një në kufirin tuaj, në mënyrë që i njëjti numër të bie brenda intervalit të rastësishëm.
jehonë $ (($ RANDOM% 11))
Kjo do të japë rezultate midis 0 dhe 10.
Një përshëndetje.
Përshëndetje, sapo po ndërtoja diçka të tillë, por hasa në një problem.
Dua të bëj 6 numra të ndryshëm nga 00 deri në 45 por të mos i përsëris.
jehonë $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($ RASTËSISHME% 46))
SH.SH.: 17 33 16 36 45 27