Maison >Java >javaDidacticiel >Comment puis-je générer des nombres aléatoires non répétitifs en Java ?

Comment puis-je générer des nombres aléatoires non répétitifs en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-09 10:01:02786parcourir

How Can I Generate Non-Repeating Random Numbers in Java?

Approche Java pour générer des nombres aléatoires non répétitifs

Créer un ensemble de nombres aléatoires uniques en Java peut être un défi. Considérons le scénario suivant dans lequel nous devons remplir un tableau avec 10 000 entiers non répétitifs allant de 0 à 9999.

L'extrait de code suivant tente de résoudre ce problème à l'aide de la classe Random intégrée de Java :

import java.util.Random;
public class Sort {
    public static void main(String[] args) {
        int[] nums = new int[10000];

        Random randomGenerator = new Random();

        for (int i = 0; i < nums.length; ++i) {
            nums[i] = randomGenerator.nextInt(10000);
        }
    }
}

Cependant, ce code peut produire des nombres en double en raison du risque de collisions lors de l'utilisation de l'opération modulo pour mapper le nombre aléatoire à la plage souhaitée. Pour garantir des numéros uniques, nous pouvons exploiter la classe Collections de Java.

Solution utilisant Java Collections.shuffle()

L'approche préférée pour générer des nombres aléatoires non répétitifs en Java consiste à utiliser la méthode Collections.shuffle(). Voici comment cela fonctionne :

  1. Créez un tableau de nombres (Integer[] arr).
  2. Utilisez Collections.shuffle(Arrays.asList(arr)) pour randomiser l'ordre des éléments dans le tableau.
  3. Le tableau aléatoire contient désormais des nombres uniques en raison du processus de brassage.

Par exemple, l'extrait de code suivant illustre cette méthode :

public static void main(String[] args) {
    Integer[] arr = new Integer[1000];
    for (int i = 0; i < arr.length; i++) {
        arr[i] = i;
    }
    Collections.shuffle(Arrays.asList(arr));
    System.out.println(Arrays.toString(arr));
}

Cette approche garantit que chaque nombre du tableau est unique et répond à l'exigence de générer des nombres aléatoires non répétitifs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn