Μερικές φορές, προγραμματίζουμε κάποιο σενάριο Bash …. και πρέπει (για κάποιο λόγο) να δημιουργήσουμε έναν τυχαίο αριθμό.
Για αυτό μπορείτε να προγραμματίσετε μια ολόκληρη εφαρμογή (ή λειτουργία ...) ναι, αλλά ... περίεργα το σύστημά μας το έχει ήδη κάνει 😀
Σε ένα τερματικό, πληκτρολογήστε τα ακόλουθα και πατήστε [Εισαγω]:
ηχώ $ RANDOM
... θα εμφανιστεί ένας αριθμός, θα κάνουν το ίδιο ξανά και θα εμφανιστεί ένας άλλος αριθμός και ούτω καθεξής 🙂
Αυτό που κάνει είναι να σας δείξει έναν τυχαίο αριθμό (οποιοδήποτε) μεταξύ 0 και 32768 (ακέραιος, δηλαδή χωρίς κόμμα).
Εάν θέλετε να είναι ένας τυχαίος αριθμός, αλλά μεταξύ 0 και ... ας πούμε 100, μπορείτε να το βάλετε αυτό 😀
echo $ (($ RANDOM% 100))
Το ίδιο, ένα άλλο παράδειγμα ... αν θέλετε να είναι ένας αριθμός μεταξύ 0 και 29 θα ήταν:
echo $ (($ RANDOM% 29))
Δεν είναι κατανοητό; 😀
Εάν το χρησιμοποιούν σε ένα σενάριο bash που κάνουν, για να αντιστοιχίσουν την παραγόμενη τιμή (έναν τυχαίο αριθμό) σε μια μεταβλητή θα ήταν:
VARIABLE = "echo $ (($ RANDOM))"
Λοιπόν, αυτό είναι, δεν ξέρω για σένα ... αλλά ξέρω ότι θα μου φανεί χρήσιμο κάποια στιγμή χαχαχα.
αφορά
Λοιπόν, το έχω δοκιμάσει και επιστρέφει μόνο έναν τετραψήφιο αριθμό, πώς μπορώ να το κάνω μεγαλύτερο;
Πολύ ενδιαφέρουσα συμβουλή, ευχαριστώ.
Επιστρέφει έναν αριθμό μεταξύ 0 και 32768, δεν κατάφερα να λάβω μεγαλύτερους αριθμούς.
και μπορεί να δημιουργήσει εξωδικασμούς ????
VARIABLE = "echo $ (($ RANDOM))"
Αυτό λειτουργεί αλλά δεν είναι βέλτιστο, για τον απλό λόγο ότι το RANDOM είναι μια μεταβλητή και μπορείτε να κάνετε:
μεταβλητή = $ RANDOM
και αυτό είναι! μην εκτελείτε ηχώ σε ένα τερματικό aprte (αυτό είναι που κάνετε)
Ναι, προφανώς μπορεί να επιτευχθεί έτσι ... η μόνη διαφορά είναι ότι αργότερα, για να δείτε τον αριθμό που πήρε η μεταβλητή (αφού ο χρήστης δεν είναι μαντέας), θα ήταν απαραίτητο να κάνετε ηχώ…. και στο τέλος, αυτό που κάνω εδώ είναι να κάνω απλώς την ηχώ (έτσι ώστε ο χρήστης να δει τι αριθμό έχει ληφθεί) από την αρχή.
Κατανοώ τον εαυτό μου; 🙂
Ένας άλλος τρόπος για να δημιουργήσετε έναν τυχαίο αριθμό, αν και αυτή τη φορά θα ήταν αυτή η εντολή:
ημερομηνία "+% N" | κοπή-γ 9
Αυτό θα μας έδινε την ημερομηνία σε νανοδευτερόλεπτα με 9 ψηφία. Αν θέλουμε ένα μόνο ψηφίο, τότε βάζετε το "cut -c 9" (το τελευταίο ψηφίο είναι πάντα πιο τυχαίο γιατί είναι το μικρότερο από τον αριθμό). Αν θέλουμε 2 αριθμούς τότε βάζουμε το "cut - c 8,9". Αν θέλουμε τρία σχήματα τότε "cut -c 7-9" (αρχίζουμε να χρησιμοποιούμε το παύλα).
Το μόνο κακό σε αυτό είναι εάν θέλουμε να έχουμε πολλούς τυχαίους αριθμούς στη σειρά σε σύντομο χρονικό διάστημα, επειδή αυτός είναι ένας τυχαίος αριθμός που βασίζεται σε μια ημερομηνία με την ώρα του. Δηλαδή, αν κάνουμε ένα με αυτήν την εντολή μπορούμε να το δούμε:
$ για i σε "seq 1 1 500"; ημερομηνία "+% N"; Έγινε
...
...
...
308311367
310807595
313273093
315725181
318186139
320671403
323360117
325733353
328335462
330694870
333259893
335858999
338375622
340798446
...
...
...
Νομίζω ότι είναι σαφές, σωστά; Τα σχήματα στα αριστερά είναι πιο παρόμοια σε σύντομο χρονικό διάστημα, φυσικά, και εκείνα στα δεξιά είναι πιο «τυχαία».
μμμ…. Μου άρεσε, έχω ένα μίνι σενάριο που μένει για τη δημιουργία τυχαίων αριθμών, ευχαριστώ.
Σερβίρει .. και πολλά ..
ειδικά αν προγραμματίζετε μια διεπαφή σε bash με κωδικό πρόσβασης, ασφάλεια, κ.λπ., κλπ, κλπ, χαχα.
Εξαιρετική πτέρυγα.
Γεια σου.
Πρώτα απ 'όλα, φυσικά, συγχαρητήρια για αυτόν τον εξαιρετικό ιστότοπο, τον οποίο παρακολουθώ εδώ και πολύ καιρό.
Και δεύτερον, κάντε μια μικρή σημείωση σε αυτήν την καταχώρηση:
Όταν ο περιορισμός γίνεται έτσι:
echo $ (($ RANDOM% 10))
Στην πραγματικότητα, αυτό που διατάζετε τον διερμηνέα είναι ότι ο αριθμός που δημιουργήσατε είναι πάντα ο συντελεστής% (υπόλοιπο της διαίρεσης) του επόμενου αριθμού, σε αυτό το παράδειγμα, 10.
Οποιοσδήποτε αριθμός διαιρούμενος με το 10 δεν θα δώσει ποτέ ως υπόλοιπο κάτι μεγαλύτερο από τον ίδιο τον διαιρέτη.
Το πρόβλημα είναι ότι δεν θα δώσει ούτε τον ίδιο αριθμό, επειδή η διαίρεση με 0 δεν είναι λογική για τον διερμηνέα.
Αυτό σημαίνει ότι το echo $ (($ RANDOM% 10) θα δώσει αποτελέσματα μεταξύ 0 και 9, αλλά ποτέ 10.
Η λύση σε αυτήν τη διένεξη είναι να προσθέσετε ένα στο όριό σας, έτσι ώστε ο ίδιος αριθμός να βρίσκεται εντός του τυχαίου εύρους.
echo $ (($ RANDOM% 11))
Αυτό θα δώσει αποτελέσματα μεταξύ 0 και 10.
Ένα χαιρετισμό.
Γεια σας, μόλις έφτιαχνα κάτι τέτοιο, αλλά αντιμετώπισα ένα πρόβλημα.
Θέλω να φτιάξω 6 διαφορετικούς αριθμούς από το 00 έως το 45 αλλά να μην τους επαναλάβω.
ηχώ $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($) ΤΥΧΑΙΟ%46))
ΠΧ: 17 33 16 36 45 27