Minsan, pinaprograma namin ang ilang script sa Malakas na palo .... at kailangan namin (para sa ilang kadahilanan) upang makabuo ng ilang mga random na numero.
Para sa na maaari mong i-program ang isang buong aplikasyon (o pag-andar ...) oo, ngunit ... nakakaisip na nagawa na ng aming system ang
Sa isang terminal, i-type ang sumusunod at pindutin [Ipasok]:
echo $ RANDOM
... lilitaw ang isang numero, ginagawa nila ulit ang parehong bagay at lilitaw ang isa pang numero, at iba pa 🙂
Ang ginagawa nito ay ipakita sa iyo ang isang random na numero (anumang) sa pagitan ng 0 at 32768 (integer, iyon ay, nang walang isang kuwit).
Kung kailangan mo ito upang maging isang random na numero, ngunit sa pagitan ng 0 at ... sabihin nating 100, maaari mong ilagay ang limitasyong iyon 😀
echo $ (($ RANDOM% 100))
Ang pareho, isa pang halimbawa ... kung nais mong ito ay isang numero sa pagitan ng 0 at 29 ito ay:
echo $ (($ RANDOM% 29))
Hindi ba ito naiintindihan? 😀
Kung gagamitin nila ito sa isang bash script na ginagawa nila, upang maitalaga ang nabuong halaga (isang random na numero) sa isang variable na magiging:
VARIABLE = `echo $ (($ RANDOM))`
At mabuti ito, hindi ko alam ang tungkol sa iyo ... ngunit alam ko na magiging kapaki-pakinabang sa akin sa ilang oras hahaha.
Regards
Sa gayon, nasubukan ko ito at nagbabalik lamang ito ng isang 4-digit na numero, paano ko ito mapapalaki?
Napakainteresyong tip, salamat.
Nagbabalik ng isang numero sa pagitan ng 0 at 32768, hindi ako nakakuha ng mas malaking mga numero.
at maaari ba itong makabuo ng mga exadecimals ????
VARIABLE = `echo $ (($ RANDOM))`
Gumagana iyon ngunit hindi ito pinakamainam, sa simpleng kadahilanan na ang RANDOM ay isang variable at magagawa mo:
variable = $ RANDOM
at yun lang! huwag patakbuhin ang echo sa isang terminal aprte (na kung ano ang ginagawa mo)
Oo, malinaw naman maaari itong makamit tulad nito ... ang pagkakaiba lamang ay sa paglaon, upang makita ang bilang na kinuha ng variable (dahil ang gumagamit ay hindi isang hula), kinakailangan na gumawa ng isang echo .... at sa huli, ang ginagawa ko dito ay simpleng gawin ang echo (upang makita ng gumagamit kung anong numero ang nakuha) mula sa simula.
Naiintindihan ko ba ang aking sarili? 🙂
Isa pang paraan upang makabuo ng isang random na numero, kahit na sa oras na ito ay ito ang magiging utos na ito:
petsa "+% N" | gupitin -c 9
Ibibigay sa amin iyon ang petsa sa mga nanosecond na may 9 na digit. Kung nais namin ang isang solong pigura pagkatapos ay ilagay mo ang "cut -c 9" (ang huling numero ay palaging mas random dahil ito ang pinakamaliit sa numero). Kung nais namin ng 2 mga numero pagkatapos ay inilalagay namin ang "cut - c 8,9". Kung nais namin ng tatlong mga numero pagkatapos "cut -c 7-9" (nagsisimula kaming gumamit ng gitling).
Ang tanging masamang bagay tungkol dito ay kung nais naming makakuha ng maraming mga random na numero sa isang hilera sa isang maikling panahon, dahil ito ay isang random na numero batay sa isang petsa kasama ang oras nito. Iyon ay, kung gumawa tayo ng para sa utos na iyon maaari nating makita iyon:
$ para sa i sa `seq 1 1 500`; gawin ang petsa na "+% N"; tapos na
...
...
...
308311367
310807595
313273093
315725181
318186139
320671403
323360117
325733353
328335462
330694870
333259893
335858999
338375622
340798446
...
...
...
Sa tingin ko malinaw naman di ba? Ang mga numero sa kaliwa ay mas magkatulad sa isang maikling puwang ng oras, syempre, at ang mga nasa kanan ay mas "random".
mmm .... Nagustuhan ko ito, mayroon akong isang mini script, ito ay ipininta upang makabuo ng mga random na numero, salamat.
Naghahain ito .. at marami ..
lalo na kung nagprogram ka ng isang interface sa bash na may password, security, etc, etc, etc haha.
Mahusay na aprote.
Hello.
Una sa lahat, syempre, binabati kita sa mahusay na website na ito, na matagal ko nang sinusunod.
At pangalawa, gumawa ng isang maliit na tala sa entry na ito:
Kapag ang paglilimita ay tapos na tulad nito:
echo $ (($ RANDOM% 10))
Sa totoo lang, ang inuutos mo sa interpreter ay ang iyong nabuong numero ay palaging ang modulus% (natitirang paghati) ng kasunod na numero, sa halimbawang ito, 10.
Ang anumang bilang na hinati sa 10 ay hindi kailanman ibibigay bilang isang natitirang isang bagay na mas malaki kaysa sa tagahati mismo.
Ang problema ay hindi ito magbibigay ng parehong numero, dahil ang isang paghahati ng 0 ay hindi lohikal para sa interpreter.
Nangangahulugan ito na ang echo $ (($ RANDOM% 10) ay magbibigay ng mga resulta sa pagitan ng 0 at 9, ngunit hindi kailanman 10.
Ang solusyon sa salungatan na ito ay upang magdagdag ng isa sa iyong limitasyon, upang ang parehong numero ay nahuhulog sa loob ng random na saklaw.
echo $ (($ RANDOM% 11))
Magbibigay ito ng mga resulta sa pagitan ng 0 at 10.
Isang pagbati.
Hello, gumagawa lang ako ng ganito, pero may problema ako.
Gusto kong gumawa ng 6 na magkakaibang mga numero mula 00 hanggang 45 ngunit hindi ulitin ang mga ito.
echo $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $($ RANDOM%46))
EX: 17 33 16 36 45 27