Joskus ohjelmoimme jonkin käsikirjoituksen sisään Kemut …. ja meidän on (jostain syystä) luotava satunnaisluku.
Tätä varten voit ohjelmoida koko sovelluksen (tai toiminnon ...) kyllä, mutta ... utelias järjestelmämme on jo tehnyt sen 😀
Kirjoita päätelaitteeseen seuraava ja paina [Tulla sisään]:
echo $ RANDOM
... numero ilmestyy, he tekevät saman uudelleen ja toinen numero tulee näkyviin, ja niin edelleen 🙂
Se näyttää sinulle satunnaisluvun (minkä tahansa) välillä 0 ja 32768 (kokonaisluku, eli ilman pilkua).
Jos tarvitset sen olevan satunnaisluku, mutta välillä 0 ja ... sanotaan 100, voit asettaa sille rajoituksen 😀
echo $ (($ RANDOM% 100))
Sama, toinen esimerkki ... jos haluat sen olevan luku välillä 0 ja 29, se olisi:
echo $ (($ RANDOM% 29))
Eikö ymmärrä? 😀
Jos he käyttävät sitä tekemässään bash-komentosarjassa, määritetyn arvon (satunnaisluku) määrittäminen muuttujalle olisi:
VARIABLE = `echo $ (($ RANDOM)) '
No, tämä on se, en tiedä sinusta ... mutta tiedän, että siitä on minulle hyötyä jossain vaiheessa hahaha.
terveiset
No, olen testannut sitä ja se palauttaa vain nelinumeroisen luvun, kuinka voin tehdä siitä suuremman?
Erittäin mielenkiintoinen vinkki, kiitos.
Palauttaa luvun välillä 0 ja 32768, en ole saanut suurempia lukuja.
ja voiko se luoda exadecimals ????
VARIABLE = `echo $ (($ RANDOM)) '
Se toimii, mutta ei ole optimaalinen siitä yksinkertaisesta syystä, että RANDOM on muuttuja ja voit tehdä:
muuttuja = $ RANDOM
ja siinä kaikki! älä suorita kaikua päätelaitteessa (mitä teetkin)
Kyllä, ilmeisesti se voidaan saavuttaa tällä tavoin ... ainoa ero on, että myöhemmin, jotta saat muuttujan ottaman numeron (koska käyttäjä ei ole arvaaja), olisi tehtävä kaiku…. ja lopulta teen vain yksinkertaisesti kaikun (jotta käyttäjä näkee, mikä numero on otettu) alusta alkaen.
Saanko minut ymmärtää? 🙂
Toinen tapa luoda satunnaisluku, vaikka tällä kertaa se olisi tämä komento:
päivämäärä "+% N" | leikkaus -c 9
Se antaisi meille päivämäärän nanosekunteina 9 numerolla. Jos haluamme yhden numeron, laitat "leikkaus -c 9" (viimeinen numero on aina satunnaisempi, koska se on pienin luvusta). Jos haluamme 2 numeroa, laitamme "leikkaus - c 8,9". Jos haluamme kolme numeroa, "leikkaa -c 7-9" (aloitamme yhdysmerkin käyttämisen).
Ainoa huono asia tässä on, jos haluamme saada useita satunnaisia numeroita peräkkäin lyhyessä ajassa, koska tämä on satunnainen luku, joka perustuu päivämäärään sen ajan kanssa. Toisin sanoen, jos teemme tuon komennon, voimme nähdä, että:
$ for i "sekvenssissä 1 1"; tee päivämäärä "+% N"; tehty
...
...
...
308311367
310807595
313273093
315725181
318186139
320671403
323360117
325733353
328335462
330694870
333259893
335858999
338375622
340798446
...
...
...
Mielestäni on selvää, eikö? Vasemmalla puolella olevat luvut ovat tietysti samanlaisia lyhyessä ajassa, ja oikealla puolella olevat luvut ovat “satunnaisempia”.
mmm… Pidin siitä, minulla on miniskripti, se on maalattu satunnaislukujen luomiseksi, kiitos.
Se palvelee .. ja paljon ..
varsinkin jos ohjelmoit bash-käyttöliittymän salasanalla, tietoturvalla jne., jne., jne. haha.
Erinomainen aprote.
Hei.
Ensinnäkin tietysti onnittelut tästä erinomaisesta verkkosivustosta, jota olen seurannut pitkään.
Ja toiseksi, tee pieni merkintä tähän merkintään:
Kun rajoittaminen tapahtuu näin:
echo $ (($ RANDOM% 10))
Itse asiassa, mitä tilaat tulkin, on se, että luotu lukusi on aina seuraavan luvun, tässä esimerkissä 10, moduuli% (jaon loppuosa).
Mikä tahansa luku, joka on jaettu 10: llä, ei koskaan anna lopuksi jotain suurempaa kuin itse jakaja.
Ongelmana on, että se ei myöskään anna samaa numeroa, koska jakaminen 0: lla ei ole loogista tulkin kannalta.
Tämä tarkoittaa, että echo $ (($ RANDOM% 10) antaa tuloksia välillä 0 ja 9, mutta ei koskaan 10.
Ratkaisu tähän ristiriitaan on lisätä yksi rajasi, niin että sama määrä kuuluu satunnaisalueeseen.
echo $ (($ RANDOM% 11))
Tämä antaa tuloksia välillä 0-10.
Tervehdys.
Hei, olin juuri rakentamassa jotain tällaista, mutta törmäsin ongelmaan.
Haluan tehdä 6 erilaista numeroa välillä 00-45, mutta en toista niitä.
echo $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($ SATUNNAIS %46))
EX: 17 33 16 36 45 27