Foje ni programas iun skripton en Bash …. kaj ni bezonas (ial) generi iun hazardan nombron.
Por tio vi povas programi tutan aplikaĵon (aŭ funkcion ...) jes, sed ... kurioze nia sistemo jam faris tion 😀
En fina stacio tajpu la jenon kaj premu [Eniru]:
eoo $ ALZANDA
... numero aperos, ili faras la samon denove kaj aperas alia numero, kaj tiel plu 🙂
Kion ĝi montras estas hazarda nombro (ajna) inter 0 kaj 32768 (entjero, tio estas sen komo).
Se vi bezonas ĝin por esti hazarda nombro, sed inter 0 kaj ... ni diru 100, vi povas meti tiun limon sur ĝin 😀
eoo $ (($ RANDOM% 100))
Same, alia ekzemplo ... se vi volas, ke ĝi estu nombro inter 0 kaj 29 ĝi estus:
eoo $ (($ RANDOM% 29))
Ĉu ĝi komprenas ne? 😀
Se ili uzos ĝin en bash-skripto, kiun ili faras, por atribui la generitan valoron (hazarda nombro) al variablo ĝi estus:
VARIABLE = "eoo $ (($ ALZANDA))"
Nu, jen, mi ne scias pri vi ... sed mi scias, ke ĝi estos utila al mi en iu momento hahaha.
salutoj
10 komentoj, lasu la viajn
Nu, mi testis ĝin kaj ĝi redonas nur 4-ciferan numeron, kiel pligrandigi ĝin?
Tre interesa konsilo, dankon.
Liveras numeron inter 0 kaj 32768, mi ne povis akiri pli grandajn nombrojn.
kaj ĉu ĝi povas generi eksdecimalojn ????
VARIABLE = "eoo $ (($ ALZANDA))"
Tio funkcias sed ne estas optimuma, pro la simpla kialo, ke RANDOM estas variablo kaj vi povas fari:
variablo = $ ALZANDA
kaj jen ĝi! ne lanĉu eoon en fina aprte (kio vi faras)
Jes, evidente ĝi atingeblas tiel ... la sola diferenco estas, ke poste, por vidi la nombron, kiun prenis la variablo (ĉar la uzanto ne estas divenanto), necesus fari eoon ... kaj finfine, kion mi faras ĉi tie, estas simple fari la e soon (por ke la uzanto vidu kian nombron estas prenita) de la komenco.
Ĉu mi komprenigas min? 🙂
Alia maniero generi hazardan numeron, kvankam ĉi-foje ĝi estus ĉi tiu komando:
dato "+% N" | tranĉi -c 9
Tio donus al ni la daton en nanosekundoj kun 9 ciferoj. Se ni volas unu figuron, tiam vi metu la "tranĉi -c 9" (la lasta figuro ĉiam estas pli hazarda ĉar ĝi estas la plej malgranda el la nombro). Se ni volas 2 figurojn, tiam ni metu la "tranĉon - c 8,9". Se ni volas tri figurojn, tiam "tranĉu -c 7-9" (ni komencas uzi streketon).
La sola malbona afero pri tio estas, se ni volas akiri multajn hazardajn nombrojn sinsekve en mallonga tempo, ĉar ĉi tio estas hazarda nombro surbaze de dato kun ĝia tempo. Tio estas, se ni faras for per tiu komando, ni povas vidi tion:
$ por i en `seq 1 1 500`; daton "+% N"; farita
...
...
...
308311367
310807595
313273093
315725181
318186139
320671403
323360117
325733353
328335462
330694870
333259893
335858999
338375622
340798446
...
...
...
Mi pensas ke estas klare ĉu ne? La figuroj maldekstre pli similas en mallonga tempo, kompreneble, kaj tiuj dekstre pli "hazardaj".
mmm…. Mi ŝatis ĝin, mi havas mini-skripton, ĝi estas pentrita por generi hazardajn nombrojn, dankon.
Ĝi servas .. kaj multe ..
precipe se vi programas interfacon en bash kun pasvorto, sekureco, ktp, ktp, ktp haha.
Bonega aprote.
Saluton.
Unue kompreneble gratulon pro ĉi tiu bonega retejo, kiun mi sekvas delonge.
Kaj due, notu ĉi tiun eniron:
Kiam limigado fariĝas tiel:
eoo $ (($ RANDOM% 10))
Fakte, kion vi ordonas al la interpretisto, tio estas, ke via generita nombro ĉiam estas la modulo% (resto de la divido) de la posta numero, en ĉi tiu ekzemplo, 10.
Ĉiu nombro dividita per 10 neniam donos kiel restaĵon ion pli grandan ol la dividanto mem.
La problemo estas, ke ĝi ankaŭ ne donos la saman nombron, ĉar divido per 0 ne estas logika por la interpretisto.
Ĉi tio signifas, ke eoo $ (($ RANDOM% 10) donos rezultojn inter 0 kaj 9, sed neniam 10.
La solvo al ĉi tiu konflikto estas aldoni unu al via limo, tiel ke la sama nombro falas ene de la hazarda gamo.
eoo $ (($ RANDOM% 11))
Ĉi tio donos rezultojn inter 0 kaj 10.
Un saluto.
Saluton, mi ĵus konstruis ion tian, sed mi renkontis problemon.
Mi volas fari 6 malsamajn nombrojn de 00 ĝis 45 sed ne ripeti ilin.
eĥo $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($ HAZARDA% 46))
EK: 17 33 16 36 45 27