public static double random();
double
, supérieure ou égale à 0 et strictement inférieure à 1.
Lors du premier appel, l'algorithme utilisé est initialisé avec un timestamp (une information temporelle relativement précise) garantissant ainsi
la production d'une séquence différente de l'exécution précédente. Cette initialisation y est réalisée en instanciant un objet de type
java.util.Random
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import java.util.Random; public class Sample { public static void main( String[] args ) { // Première séquence de code en utilisant Math.random(). for( int i=0; i<5; i++ ) { System.out.println( StrictMath.random() ); } // Seconde séquence de code en utilisant la classe Random. Random random = new Random(); for( int i=0; i<5; i++ ) { System.out.println( random.nextDouble() ); } } } |
De plus l'algorithme utilisé est « thread-safe » : cela signifie que plusieurs appels à la méthode random
peuvent être lancés
en parallèle (par différents threads).
Cette méthode n'accepte aucun paramètre.
La valeur de retour est de type double
. Elle correspond en une valeur flottante pseudo-aléatoire, typée double, supérieure ou égale à 0 et strictement inférieure à 1.
L'exemple de code proposé ci-dessous est un petit jeu : il permet de compter le nombre de coups mit à l'utilisateur pour retrouver une valeur entière aléatoire comprise entre 1 et 100.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
package fr.koor.samples; import java.util.Scanner; public class MegaGame { public static void main( String[] args ) { System.out.println( "Bienvenue dans MegaGame V1.0" ); // Le scanner est utilisé pour décoder les informations saisies sur la console. try ( Scanner scanner = new Scanner( System.in ) ) { // On calcule une valeur entière aléatoire comprise entre 1 et 100. int randomValue = 1 + (int) ( StrictMath.random() * 100 ); // System.out.println( "For debug: randomValue == " + randomValue ); // Pour compter le nombre de tentatives pour trouver la valeur aléatoire. int score = 0; while( true ) { // On demande la saisie d'un nombre entier System.out.print( "Veuillez saisir une valeur entière (1..100) : " ); int value = scanner.nextInt(); score++; // On vérifie la saisie if ( value == randomValue ) { System.out.println( "Bravo, vous avez trouvé en " + score + " coup(s)." ); break; } else if ( value < randomValue ) { System.out.println( "La valeur à trouver est plus grande." ); } else { System.out.println( "La valeur à trouver est plus petite." ); } } } System.out.println( "Merci d'avoir joué et à bientôt." ); } } |
Et voici un exemple d'utilisation de ce programme.
Bienvenue dans MegaGame V1.0 Veuillez saisir une valeur entière (1..100) : 50 La valeur à trouver est plus petite. Veuillez saisir une valeur entière (1..100) : 25 La valeur à trouver est plus grande. Veuillez saisir une valeur entière (1..100) : 35 Bravo, vous avez trouvé en 3 coup(s). Merci d'avoir joué et à bientôt.
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :