Néha beprogramozunk néhány szkriptet Bash …. és valamilyen okból generálnunk kell valami véletlen számot.
Ehhez beprogramozhat egy teljes alkalmazást (vagy funkciót ...) igen, de ... kíváncsian a rendszerünk már megtette ezt 😀
A terminálba írja be az alábbiakat, és nyomja meg a gombot [Belép]:
echo $ RANDOM
... megjelenik egy szám, megint ugyanazt csinálják, és megjelenik egy másik szám, és így tovább 🙂
Amit csinál, az egy véletlenszerű számot mutat (bármilyen) 0 és 32768 között (egész szám, vagyis vessző nélkül).
Ha szükséged van rá, hogy véletlenszerű szám legyen, de 0 és ... között mondjuk 100, akkor ezt a korlátot ráteheted 😀
echo $ (($ RANDOM% 100))
Ugyanez, egy másik példa ... ha azt szeretné, hogy ez 0 és 29 közötti szám legyen, az a következő lenne:
echo $ (($ RANDOM% 29))
Nem értik? 😀
Ha egy általuk használt bash szkriptben fogják használni, akkor a generált értéket (véletlenszerű szám) hozzárendelni egy változóhoz:
VÁLTOZÓ = "echo $ (($ RANDOM))"
Nos, ez az, nem tudok rólad ... de tudom, hogy valamikor hasznos lesz számomra hahaha.
Üdvözlet
Nos, teszteltem, és csak egy négyjegyű számot ad vissza, hogyan tudom nagyobbítani?
Nagyon érdekes tipp, köszönöm.
0 és 32768 közötti számot ad vissza, nagyobb számokat nem sikerült megszereznem.
és generálhat-e exadecimálisokat ????
VÁLTOZÓ = "echo $ (($ RANDOM))"
Ez működik, de nem optimális, abból az egyszerű okból, hogy a RANDOM változó, és megteheti:
változó = $ RANDOM
és ez az! ne futtasd az echo-t egy terminál aprte-ban (amit csinálsz)
Igen, nyilvánvalóan így érhető el ... az egyetlen különbség az, hogy később, a változó által vett szám megtekintéséhez (mivel a felhasználó nem tippelő), szükség lenne visszhangra. és végül, amit itt csinálok, egyszerűen a visszhangot (hogy a felhasználó láthassa, hogy milyen számot vesznek fel) a kezdetektől fogva.
Megértetem magam? 🙂
A véletlenszerű szám előállításának másik módja, bár ezúttal ez a parancs lenne:
dátum "+% N" | vágás -c 9
Ez megadná nekünk a dátumot nanoszekundumban, 9 számjeggyel. Ha egyetlen számjegyet akarunk, akkor tegye a "cut -c 9" -t (az utolsó számjegy mindig véletlenszerűbb, mert a szám közül a legkisebb). Ha 2 ábrát akarunk, akkor tegyük a "vágás - c 8,9" -t. Ha három számot akarunk, akkor "vágjuk -c 7-9" (elkezdjük használni a kötőjelet).
Az egyetlen rossz dolog ebben az, ha rövid idő alatt sok véletlenszerű számot akarunk kapni egymás után, mert ez egy véletlenszerű szám, amely egy dátumon alapul. Vagyis ha ezzel a paranccsal csinálunk egy for-t, akkor láthatjuk, hogy:
$ for i az "1 1 500 szekvenciában"; do date "+% N"; Kész
...
...
...
308311367
310807595
313273093
315725181
318186139
320671403
323360117
325733353
328335462
330694870
333259893
335858999
338375622
340798446
...
...
...
Szerintem egyértelmű, igaz? A bal oldali ábrák természetesen rövid idő alatt jobban hasonlítanak egymásra, a jobboldaliak pedig inkább „véletlenszerűek”.
mmm…. Tetszett, van egy mini szkriptem, amelyet véletlenszerű számok generálására festenek, köszönöm.
Ez szolgál .. és sok ..
főleg, ha egy bash felületet programozol jelszóval, biztonsággal, stb, stb, stb, haha.
Kiváló aprote.
Hello.
Mindenekelőtt természetesen gratulálok ehhez a kiváló weboldalhoz, amelyet már régóta követek.
Másodszor, tegyen egy kis megjegyzést ehhez a bejegyzéshez:
Ha a korlátozás így történik:
echo $ (($ RANDOM% 10))
Tulajdonképpen azt rendeli, hogy a tolmács az legyen, hogy a létrehozott szám mindig a következő szám modulus% -a (az osztás maradéka), ebben a példában 10.
Bármely 10-gyel elosztott szám soha nem ad maradékként valami nagyobbat, mint maga az osztó.
A probléma az, hogy ez sem adja meg ugyanazt a számot, mert a 0-val való felosztás nem logikus a tolmács számára.
Ez azt jelenti, hogy az echo $ (($ RANDOM% 10) 0 és 9 között fog eredményt adni, de soha 10-et.
Ennek a konfliktusnak a megoldása az, ha hozzáad egyet a korlátjához, így ugyanaz a szám a véletlenszerű tartományba esik.
echo $ (($ RANDOM% 11))
Ez 0 és 10 közötti eredményt ad.
A köszöntés.
Sziasztok, épp valami ilyesmit készítettem, de egy problémába ütköztem.
6 különböző számot szeretnék készíteni 00-tól 45-ig, de nem ismételni őket.
echo $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($ VÉLETLENSZERŰ%46))
PL.: 17 33 16 36 45 27