2010-03-22 6 views
1

J'ai un tableau de nombres entiers (disons 1,2,3,4,5 ou 1,2,3, ... 10 ou 1,2,3, ... 50) de que je voudrais obtenir un ensemble aléatoire de nombres commandés différemment chaque fois. Existe-t-il une méthode d'utilité pour cela?Numériser des nombres au sein d'un sous-ensemble

par exemple. pour 1,2,3,4,5 post randomisation, il pourrait être soit [1,5,4,2,3 ou 2,1,3,5,4 ou 3,1,2,4,5 ou ... ]

Je voudrais savoir s'il existe une méthode/classe utilitaire java qui offre déjà cette fonctionnalité?

+0

Si vous voulez qu'il soit commandé différemment chaque fois que vous finirez par manquer de permutations inutilisées. Quoi alors? –

+0

Tant qu'il est commandé différemment et obtenir le même ordre de temps en temps est bien avec moi. – Sam

Répondre

2

Collections.shuffle?

Cela ne va pas aider directement avec un tableau, mais si vous le convertissez en List<Integer> ça va marcher. (Vous ne pouvez pas utiliser Arrays.asList avec un int[], malheureusement.)

Vous pouvez également mettre en œuvre un Fisher-Yates Shuffle vous très facilement - en fait, cette page Wikipedia a même une implémentation en Java :) (je changerais à prendre une référence Random comme paramètre, cependant - vous ne voulez pas créer une nouvelle instance de Random chaque fois que vous l'appelez)

+0

(+1) et la conversion est effectuée en utilisant 'Arrays.asList (array)' si le tableau est de non-primitives – Bozho

+0

@Bozho: Merci, corrigé la référence 'asList'. –

+0

et http://commons.apache.org/lang/api/org/apache/commons/lang/ArrayUtils.html peuvent vous aider - 'toObject (..)' – Bozho