Υπάρχουν πολλοί τρόποι για να δημιουργήσεις τυχαίες τιμές στην Java.
Random
Η κλάση java.util.Random παρέχει αρκετές μεθόδους για τη δημιουργία ψευδοτυχαίων τιμών.
Random random = new Random();
random.next(8); // Generates a random int with the given number of bits, in this case 8
random.nextInt(); // Generates a random int in the range Integer.MIN_VALUE through Integer.MAX_VALUE
random.nextInt(10); // Generates a random int in the range 0 to 10
random.nextFloat(); // Generates a random float in the range 0.0 to 1.0
random.nextDouble(); // Generates a random double in the range 0.0 to 1.0
random.nextBoolean(); // Generates a random boolean value
random.nextLong(); // Generates a random long value
Εκτός από τον προεπιλεγμένο κατασκευαστή της, η κλάση Random έχει και έναν ακόμη κατασκευαστή όπου μπορείς να δώσεις ένα προσαρμοσμένο seed.
Αν δημιουργηθούν δύο στιγμιότυπα του Random με το ίδιο seed και γίνει η ίδια ακολουθία κλήσεων μεθόδων στο καθένα, θα παράγουν και θα επιστρέψουν πανομοιότυπες ακολουθίες αριθμών.
Math.random()
Η μέθοδος Math.random() είναι μια βοηθητική μέθοδος για τη δημιουργία ενός τυχαίου Double στο διάστημα από 0.0 έως 1.0.
ThreadLocalRandom
Η κλάση java.util.concurrent.ThreadLocalRandom είναι μια εναλλακτική για την java.util.Random και είναι σχεδιασμένη να είναι thread-safe.
Αυτή η κλάση έχει κάποιες επιπλέον βοηθητικές μεθόδους για τη δημιουργία τιμών που δέχονται και κάτω και άνω όριο, κάνοντάς την λίγο πιο εύκολη στη χρήση.
ThreadLocalRandom random = ThreadLocalRandom.current();
random.nextInt(10, 20); // Generates a random int in the range 10 to 20
random.nextLong(10, 20); // Generates a random long in the range 10 to 20
random.nextFloat(10.0, 20.0); // Generates a random float in the range 10 to 20
random.nextDouble(10.0, 20.0); // Generates a random double in the range 10 to 20
Οι τυχαίες τιμές χρησιμοποιούνται συχνά για τη δημιουργία ευαίσθητων τιμών, όπως κωδικοί πρόσβασης. Ωστόσο, όλες οι μέθοδοι δημιουργίας τυχαίων τιμών που περιγράφηκαν παραπάνω δεν θεωρούνται κρυπτογραφικά ασφαλείς.
Για να δημιουργήσεις κρυπτογραφικά ισχυρούς τυχαίους αριθμούς, χρησιμοποίησε την κλάση java.security.SecureRandom.