Ponekad programiramo neku skriptu na jeziku bash …. i trebamo (iz nekog razloga) generirati neki slučajni broj.
Za to možete programirati cijelu aplikaciju (ili funkciju ...) da, ali ... znatiželjno, naš sistem je to već učinio 😀
U terminal unesite sljedeće i pritisnite [unesite]:
echo $ RANDOM
... pojavit će se broj, oni će ponoviti isto, a pojavit će se drugi broj, i tako dalje 🙂
Ono što radi je da vam pokaže slučajni broj (bilo koji) između 0 i 32768 (cijeli broj, odnosno bez zareza).
Ako vam je potreban slučajan broj, ali između 0 i ... recimo 100, možete to ograničenje staviti 😀
echo $ (($ RANDOM% 100))
Isti, još jedan primjer ... ako želite da to bude broj između 0 i 29 to bi bilo:
echo $ (($ RANDOM% 29))
Zar se to ne razumije? 😀
Ako će ga koristiti u bash skripti koju rade, dodjeljivanje generirane vrijednosti (slučajni broj) varijabli bilo bi:
VARIABLE = `echo $ (($ RANDOM))`
I dobro, to je to, ne znam za vas ... ali znam da će mi to kad-tad biti korisno hahaha.
Saludos
Pa, testirao sam ga i vraća samo četveroznamenkasti broj, kako ga povećati?
Vrlo zanimljiv savjet, hvala.
Vraća broj između 0 i 32768, nisam uspio dobiti veće brojeve.
i može li generirati exadecimals ????
VARIABLE = `echo $ (($ RANDOM))`
To djeluje, ali nije optimalno, iz jednostavnog razloga što je RANDOM varijabla i možete učiniti:
varijabla = $ RANDOM
i to je to! nemojte pokretati odjek u aprte terminalu (što i radite)
Da, očito se to može postići ovako ... jedina razlika je u tome što bi kasnije, da bi se vidio broj koji je varijabla uzela (budući da korisnik nije pogađač), bilo potrebno izvršiti odjek .... i na kraju, ono što ovdje radim je jednostavno odzvanjanje (tako da korisnik može vidjeti koji se broj uzima) od početka.
Da li se razumijem? 🙂
Drugi način generiranja slučajnog broja, iako bi ovaj put to bila ova naredba:
datum "+% N" | cut -c 9
To bi nam dalo datum u nanosekundama sa 9 znamenki. Ako želimo jednu brojku, tada stavite "cut -c 9" (zadnja brojka je uvijek slučajnija jer je najmanja od broja). Ako želimo dvije brojke, tada stavljamo "rez - c 2". Ako želimo tri brojke, onda "isecite -c 8,9-7" (počinjemo koristiti crticu).
Jedina loša stvar u vezi s tim je ako želimo dobiti puno slučajnih brojeva u nizu u kratkom vremenu, jer je to slučajni broj zasnovan na datumu sa svojim vremenom. Odnosno, ako pomoću naredbe napravimo for, možemo vidjeti da:
$ za i u `seq 1 1 500`; datum završetka "+% N"; gotovo
...
...
...
308311367
310807595
313273093
315725181
318186139
320671403
323360117
325733353
328335462
330694870
333259893
335858999
338375622
340798446
...
...
...
Mislim da je to jasno, zar ne? Brojke na lijevoj strani su, naravno, sličnije u kratkom vremenskom razmaku, a one na desnoj su više "slučajne".
mmm…. Svidjelo mi se, imam mini skriptu koja je preostala za generiranje slučajnih brojeva, hvala.
Služi .. i puno ..
pogotovo ako programirate interfejs u bash-u sa lozinkom, zaštitom, itd, itd, itd haha.
Izvrsna prilika.
Zdravo.
Prije svega, naravno, čestitke na ovoj izvrsnoj web stranici koju pratim već dugo.
I drugo, dodajte malu bilješku uz ovaj unos:
Kada se ograničenje radi ovako:
echo $ (($ RANDOM% 10))
Zapravo, ono što naručite tumaču je da je vaš generirani broj uvijek modul% (ostatak podjele) sljedećeg broja, u ovom primjeru 10.
Bilo koji broj podijeljen s 10 nikada neće dati ostatku nešto veće od samog djelitelja.
Problem je što ni on neće dati isti broj, jer podjela s 0 nije logična za tumača.
To znači da će echo $ (($ RANDOM% 10) dati rezultate između 0 i 9, ali nikada 10.
Rješenje ovog sukoba je dodavanje jednog vašem ograničenju, tako da isti broj spada u slučajni raspon.
echo $ (($ RANDOM% 11))
To će dati rezultate između 0 i 10.
A pozdrav.
Zdravo, upravo sam pravio ovako nešto, ali sam naišao na problem.
Želim da napravim 6 različitih brojeva od 00 do 45, ali da ih ne ponavljam.
echo $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($ RANDOM%46))
Npr.: 17 33 16 36 45 27