Nogle gange programmerer vi noget script i Bash …. og vi har brug for (af en eller anden grund) at generere et tilfældigt tal.
Til det kan du programmere en hel applikation (eller funktion ...) ja, men ... underligt nok har vores system allerede gjort det 😀
Skriv følgende i en terminal og tryk på [Gå ind]:
ekko $ RANDOM
... et nummer vises, de gør det samme igen, og et andet nummer vises osv. 🙂
Hvad det gør er at vise dig et tilfældigt tal (ethvert) mellem 0 og 32768 (heltal, det vil sige uden komma).
Hvis du har brug for det for at være et tilfældigt tal, men mellem 0 og ... lad os sige 100, kan du sætte den grænse for det 😀
ekko $ (($ RANDOM% 100))
Det samme, et andet eksempel ... hvis du vil have det til at være et tal mellem 0 og 29, ville det være:
ekko $ (($ RANDOM% 29))
Forståes det ikke? 😀
Hvis de bruger det i et bash-script, de laver, for at tildele den genererede værdi (et tilfældigt tal) til en variabel ville det være:
VARIABLE = `echo $ (($ RANDOM))`
Nå, det er det, jeg ved ikke om dig ... men jeg ved, at det vil være nyttigt for mig på et tidspunkt hahaha.
hilsen
Nå, jeg har testet det, og det returnerer kun et 4-cifret tal, hvordan kan jeg gøre det større?
Meget interessant tip, tak.
Returnerer et tal mellem 0 og 32768, jeg har ikke været i stand til at få større tal.
og kan det generere eksecimaler ????
VARIABLE = `echo $ (($ RANDOM))`
Det fungerer, men er ikke optimalt, af den enkle grund, at RANDOM er en variabel, og du kan gøre:
variabel = $ RANDOM
og det er det! kør ikke ekko i en terminal aprte (hvilket er hvad du laver)
Ja, det kan naturligvis opnås sådan ... den eneste forskel er, at det senere ville være nødvendigt at lave et ekko for at se antallet, som variablen tog (da brugeren ikke er en gætter). og i sidste ende, hvad jeg laver her er simpelthen at gøre ekkoet (så brugeren kan se, hvilket nummer der tages) fra starten.
Gør jeg mig forstået? 🙂
En anden måde at generere et tilfældigt tal på, selvom det denne gang ville være denne kommando:
dato "+% N" | skære -c 9
Det ville give os datoen i nanosekunder med 9 cifre. Hvis vi vil have et enkelt ciffer, skal du sætte "cut -c 9" (det sidste ciffer er altid mere tilfældigt, fordi det er det mindste af tallet). Hvis vi vil have 2 tal, sætter vi "cut - c 8,9". Hvis vi vil have tre figurer, skal du "klippe -c 7-9" (vi begynder at bruge bindestreg).
Den eneste dårlige ting ved dette er, hvis vi ønsker at få mange tilfældige tal i træk på kort tid, fordi dette er et tilfældigt tal baseret på en dato med dens tid. Det vil sige, hvis vi laver en med denne kommando, kan vi se, at:
$ for i i `seq 1 1 500`; udførelsesdato "+% N"; Færdig
...
...
...
308311367
310807595
313273093
315725181
318186139
320671403
323360117
325733353
328335462
330694870
333259893
335858999
338375622
340798446
...
...
...
Jeg synes, det er klart, ikke? Figurerne til venstre er naturligvis mere ens på kort tid, og dem til højre er mere “tilfældige”.
mmm…. Jeg kunne godt lide det, jeg har et mini-script, det er malet for at generere tilfældige tal, tak.
Det tjener .. og meget ..
især hvis du programmerer en grænseflade i bash med adgangskode, sikkerhed osv. osv. osv. haha.
Fremragende aprote.
Hej.
Først og fremmest selvfølgelig tillykke med denne fremragende hjemmeside, som jeg har fulgt længe.
Og for det andet, skriv en lille note til denne post:
Når begrænsning gøres sådan:
ekko $ (($ RANDOM% 10))
Det, du bestiller tolk, er faktisk, at dit genererede nummer altid er modulus% (resten af divisionen) af det efterfølgende nummer, i dette eksempel 10.
Ethvert tal divideret med 10 vil aldrig give som en rest noget større end deleren selv.
Problemet er, at det heller ikke giver det samme tal, fordi en division med 0 ikke er logisk for tolken.
Dette betyder, at ekko $ (($ RANDOM% 10) vil give resultater mellem 0 og 9, men aldrig 10.
Løsningen på denne konflikt er at tilføje en til din grænse, så det samme antal falder inden for det tilfældige interval.
ekko $ (($ RANDOM% 11))
Dette giver resultater mellem 0 og 10.
En hilsen.
Hej, jeg var lige ved at bygge sådan noget, men jeg stødte på et problem.
Jeg vil lave 6 forskellige tal fra 00 til 45, men ikke gentage dem.
ekko $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($ TILFÆLDIGT%46))
EX: 17 33 16 36 45 27