Quelqu'un peut-il me dire comment générer des nombres aléatoires sans répétition Exemple p>
aléatoire (10) devrait (mai) renvoyer 3,4,2,1,7,6,5,8,9,10 sans répétition p>
merci p>
4 Réponses :
Je suggérerais d'ajouter les chiffres à un arraylist collections.shuffle () code> pour randomiser leur commande. Quelque chose comme ceci:
aimé! Une question, si j'exécute une collection.shuffle deux fois ou trois fois fournira-t-il un ordre différent?
Je suis à peu près sûr que ça va. Je ne peux pas trouver une raison pour laquelle cela ne devrait pas. Assez facile pour vérifier cependant, hein? ;)
Créez une liste des nombres générés lorsque votre numéro nouvellement généré est déjà dans cette liste, vous établissez un nouveau nombre aléatoire.
Random rng = new Random(); // Ideally just create one instance globally
List<Integer> generated = new ArrayList<Integer>();
for (int i = 0; i < numbersNeeded; i++)
{
while(true)
{
Integer next = rng.nextInt(max) + 1;
if (!generated.contains(next))
{
// Done for this iteration
generated.add(next);
break;
}
}
}
Malheureusement, cette méthode ne va pas très bien
S'il n'y a que quelques numéros, moins de 100 ans, je pense que je pense que la solution pourrait créer une matrice booléenne et une fois que vous avez un numéro, définissez la position de la matrice sur TRUE. Je ne pense pas qu'il faut beaucoup de temps avant que tous les chiffres apparaissent. J'espère que ça vous aide! P>
Cheer! p>
Mes deux cents
J'aime le Sublist () Code> Amélioration de cette solution - idéal pour faire face à une main de cartes d'un pont
Il vous aidera: Stackoverflow. com / questions / 4040001 / ...