Soms programmeren we een script in Slaan …. en we moeten (om de een of andere reden) een willekeurig getal genereren.
Daarvoor kun je een hele applicatie (of functie ...) programmeren ja, maar ... merkwaardig genoeg heeft ons systeem dat al gedaan 😀
Typ het volgende in een terminal en druk op [Enter]:
echo $ RANDOM
... er verschijnt een nummer, ze doen hetzelfde opnieuw en een ander nummer verschijnt, enzovoort 🙂
Wat het doet, is je een willekeurig getal (willekeurig) tussen 0 en 32768 (geheel getal, dat wil zeggen zonder komma).
Als het een willekeurig getal moet zijn, maar tussen 0 en ... laten we zeggen 100, kun je die limiet erop zetten 😀
echo $ (($ RANDOM% 100))
Hetzelfde, nog een voorbeeld ... als je wilt dat het een getal tussen 0 en 29 is, zou het zijn:
echo $ (($ RANDOM% 29))
Is het niet begrepen? 😀
Als ze het zullen gebruiken in een bash-script dat ze aan het doen zijn, om de gegenereerde waarde (een willekeurig getal) toe te wijzen aan een variabele, zou het zijn:
VARIABLE = `echo $ (($ RANDOM))`
Nou, dit is het, ik weet niets over jou ... maar ik weet dat het op een gegeven moment nuttig voor me zal zijn hahaha.
groeten
Nou, ik heb het getest en het geeft alleen een 4-cijferig nummer terug, hoe maak ik het groter?
Zeer interessante tip, bedankt.
Retourneert een getal tussen 0 en 32768, ik heb geen grotere getallen kunnen krijgen.
en kan het exadecimalen genereren ????
VARIABLE = `echo $ (($ RANDOM))`
Dat werkt maar is niet optimaal, om de simpele reden dat RANDOM een variabele is en je kunt doen:
variabele = $ RANDOM
en dat is het! voer geen echo uit in een terminal aprte (dat is wat je doet)
Ja, het kan natuurlijk zo worden bereikt ... het enige verschil is dat het later, om het getal te zien dat de variabele heeft aangenomen (aangezien de gebruiker geen gokker is), nodig zou zijn om een echo uit te voeren .... en uiteindelijk doe ik hier gewoon de echo (zodat de gebruiker kan zien welk nummer wordt gebruikt) vanaf het begin.
Maak ik mezelf verstaanbaar? 🙂
Een andere manier om een willekeurig getal te genereren, hoewel dit deze keer dit commando zou zijn:
datum "+% N" | knippen -c 9
Dat zou ons de datum in nanoseconden met 9 cijfers geven. Als we een enkel cijfer willen, plaats je de "cut -c 9" (het laatste cijfer is altijd meer willekeurig omdat dit het kleinste van het getal is). Als we 2 cijfers willen, plaatsen we de "cut - c 8,9". Als we drie cijfers willen, dan "cut -c 7-9" (we beginnen het koppelteken te gebruiken).
Het enige vervelende hieraan is als we in korte tijd veel willekeurige getallen achter elkaar willen krijgen, omdat dit een willekeurig getal is op basis van een datum met zijn tijd. Dat wil zeggen, als we een voor maken met dat commando, kunnen we zien dat:
$ voor i in `seq 1 1 500`; datum doen "+% N"; gedaan
...
...
...
308311367
310807595
313273093
315725181
318186139
320671403
323360117
325733353
328335462
330694870
333259893
335858999
338375622
340798446
...
...
...
Ik denk dat het duidelijk is, toch? De cijfers aan de linkerkant lijken in korte tijd natuurlijk meer op elkaar en die aan de rechterkant zijn meer 'willekeurig'.
mmm…. Ik vond het leuk, ik heb een miniscript dat willekeurige getallen genereert, bedankt.
Het dient ... en veel ...
vooral als je een interface in bash programmeert met wachtwoord, beveiliging, etc, etc, etc haha.
Uitstekende aprote.
Hey.
Allereerst natuurlijk gefeliciteerd met deze uitstekende website, die ik al een hele tijd volg.
En ten tweede, maak een kleine notitie bij dit bericht:
Als het beperken als volgt wordt gedaan:
echo $ (($ RANDOM% 10))
Wat je eigenlijk de tolk bestelt, is dat je gegenereerde getal altijd de modulus% (rest van de deling) is van het volgende getal, in dit voorbeeld 10.
Elk getal gedeeld door 10 zal nooit als rest iets opleveren dat groter is dan de deler zelf.
Het probleem is dat het ook niet hetzelfde nummer zal geven, want delen door 0 is niet logisch voor de tolk.
Dit betekent dat echo $ (($ RANDOM% 10) resultaten geeft tussen 0 en 9, maar nooit 10.
De oplossing voor dit conflict is om er een aan uw limiet toe te voegen, zodat hetzelfde nummer binnen het willekeurige bereik valt.
echo $ (($ RANDOM% 11))
Dit levert resultaten op tussen 0 en 10.
Een groet.
Hallo, ik was net zoiets aan het bouwen, maar ik liep tegen een probleem aan.
Ik wil 6 verschillende getallen maken van 00 tot 45 maar ze niet herhalen.
echo $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($ WILLEKEURIG%46))
Vb: 17 33 16 36 45 27