Δημιουργία σειράς τυχαίους αριθμούς είναι ένα από αυτά τα κοινά καθήκοντα που εμφανίζονται από καιρό σε καιρό. Σε Ιάβα, μπορεί να επιτευχθεί απλά χρησιμοποιώντας το java.util. Τυχαία τάξη.
Το πρώτο βήμα, όπως και με τη χρήση οποιουδήποτε API τάξη, είναι να βάλετε τη δήλωση εισαγωγής πριν από την έναρξη της τάξης του προγράμματος σας:
Στη συνέχεια, δημιουργήστε ένα τυχαίο αντικείμενο:
Το τυχαίο αντικείμενο σας παρέχει μια απλή γεννήτρια τυχαίων αριθμών. Οι μέθοδοι του αντικειμένου δίνουν τη δυνατότητα επιλογής τυχαίων αριθμών. Για παράδειγμα, οι μέθοδοι nextInt () και nextLong () θα επιστρέψουν έναν αριθμό που βρίσκεται εντός του πεδίου τιμών (αρνητικό και θετικό) των int και των μακρών τύπων δεδομένων αντίστοιχα:
Οι αριθμοί που επιστρέφονται θα επιλέγονται τυχαία int και μακρές τιμές:
Επιλέγοντας τυχαίους αριθμούς από ορισμένο εύρος
Κανονικά οι τυχαίοι αριθμοί που παράγονται πρέπει να είναι από ένα ορισμένο εύρος (π.χ., μεταξύ 1 και 40 συμπεριλαμβανομένου). Για το σκοπό αυτό, η μέθοδος nextInt () μπορεί επίσης να αποδεχθεί μια παράμετρο int. Δηλώνει το ανώτατο όριο για το εύρος αριθμών. Ωστόσο, ο αριθμός ανώτατου ορίου δεν περιλαμβάνεται ως ένας από τους αριθμούς που μπορείτε να επιλέξετε. Αυτό μπορεί να ακούγεται συγκεχυμένο, αλλά η μέθοδος nextInt () λειτουργεί από το μηδέν προς τα πάνω. Για παράδειγμα:
θα επιλέξει μόνο έναν τυχαίο αριθμό από 0 έως 39 συμπεριλαμβανομένου. Για να επιλέξετε από μια περιοχή που ξεκινά με 1, απλά προσθέστε 1 στο αποτέλεσμα της μεθόδου nextInt (). Για παράδειγμα, για να διαλέξετε έναν αριθμό από το 1 έως το 40, προσθέστε συνολικά ένα στο αποτέλεσμα:
Αν το εύρος ξεκινά από ένα μεγαλύτερο αριθμό από ένα θα πρέπει να:
- μείον τον αριθμό εκκίνησης από τον αριθμό του ανώτερου ορίου και στη συνέχεια προσθέστε ένα.
- προσθέστε τον αριθμό έναρξης στο αποτέλεσμα της μεθόδου nextInt ().
Για παράδειγμα, για να επιλέξετε έναν αριθμό από 5 έως 35 συμπεριλαμβανομένου, ο ανώτερος αριθμός θα είναι 35-5 + 1 = 31 και 5 πρέπει να προστεθεί στο αποτέλεσμα:
Πόσο τυχαία είναι η τυχαία τάξη;
Θα πρέπει να επισημάνω ότι η τάξη Random δημιουργεί τυχαίους αριθμούς με έναν αιτιοκρατικό τρόπο. Ο αλγόριθμος που παράγει την τυχαιότητα βασίζεται σε έναν αριθμό που ονομάζεται σπόρος. Εάν ο αριθμός σπόρου είναι γνωστός τότε είναι δυνατόν να υπολογίσουμε τους αριθμούς που πρόκειται να παραχθούν από τον αλγόριθμο. Για να το αποδείξω αυτό θα χρησιμοποιήσω τους αριθμούς από την ημερομηνία εκείνη Νιλ Άρμστρονγκ πρώτα βγήκε στη Σελήνη ως αριθμός σπόρου μου (20 Ιουλίου 1969):
Δεν έχει σημασία ποιος εκτελεί αυτόν τον κώδικα η ακολουθία των "τυχαίων" αριθμών που παράγονται θα είναι:
Από προεπιλογή ο αριθμός σπόρου που χρησιμοποιείται από:
είναι η τρέχουσα ώρα σε χιλιοστά του δευτερολέπτου από την 1η Ιανουαρίου 1970. Κανονικά αυτό θα παράγει αρκετά τυχαίους αριθμούς για τους περισσότερους σκοπούς. Ωστόσο, σημειώστε ότι δύο γεννήτριες τυχαίων αριθμών που δημιουργήθηκαν μέσα στο ίδιο χιλιοστό του δευτερολέπτου θα δημιουργήσουν τους ίδιους τυχαίους αριθμούς.
Προσέξτε επίσης όταν χρησιμοποιείτε την τάξη Random για οποιαδήποτε εφαρμογή που πρέπει να έχει μια ασφαλή γεννήτρια τυχαίων αριθμών (π.χ. ένα πρόγραμμα παιχνιδιού). Ίσως είναι δυνατό να μαντέψετε τον αριθμό σπόρου με βάση την ώρα που εκτελείται η εφαρμογή. Γενικά, για εφαρμογές όπου οι τυχαίοι αριθμοί είναι απολύτως κρίσιμοι, είναι καλύτερο να βρεθεί μια εναλλακτική λύση στο τυχαίο αντικείμενο. Για τις περισσότερες εφαρμογές όπου χρειάζεται απλώς ένα συγκεκριμένο τυχαίο στοιχείο (π.χ. ζάρια για ένα επιτραπέζιο παιχνίδι) τότε λειτουργεί καλά.