|
|
|
|
[Java] Choix aléatoire de nombre
Dernière réponse le 1 mai 2007 à 09:59:19 Steeve, le 1 mai 2007 à 01:12:04Probleme programmation Java
Bjr tout le monde, je suis un débutant en programmation...et je dois faire un programme pour gerer un parking.Dans mon programme principal j'ai un vecteur de voiture : [8]vo; j'aimerais qu'il choissise aléatoirement une voiture du vecteur pour lui appliquer certaines méthodes...j'ai pensé à utliser un Utilitaires.aléa(8) mais il est possible qu'il tire deux fois le même nombre, ce qui pour la suite est très très gênant.Comment éliminer ce risque...
Merci d'avance
PS: je sais que je ne suis pas très claire donc n'hésitez pas à me demander des précisions.
Configuration: Windows XP Firefox 1.5.0.11
Salut!
import java.util.Collection;
import java.util.Vector;
import org.omg.CORBA.portable.RemarshalException;
/**
* Created on 01-mai-07
*
* Description: Cette classe étend la classe Vector.
* Elle contient deux méthodes supplémentaires:
* <ul>
* <li>getRandomElement() qui retourne aléatoirement un objet de type E qui
* appartient au vecteur sans jamais renvoyer deux fois le même objet</li>
* <li>resetRandom() qui permet de réinitialiser le retoru aléatoire d'un
* élément du vecteur
* </ul>
*
* @author: HackTrack for CCM
*/
public class RandomGetVector<E extends Object> extends Vector<E> {
private Vector<E> remainingObjects;
private static final long serialVersionUID = -6047874282826032292L;
public RandomGetVector() {
remainingObjects = new Vector<E>();
}
public RandomGetVector(int initialCapacity) {
super(initialCapacity);
remainingObjects = new Vector<E>(initialCapacity);
}
public RandomGetVector(Collection<E> c) {
super(c);
remainingObjects = new Vector<E>(c);
}
public RandomGetVector(int initialCapacity, int capacityIncrement) {
super(initialCapacity, capacityIncrement);
remainingObjects = new Vector<E>(initialCapacity, capacityIncrement);
}
public boolean add(E o) {
if (remainingObjects.add(o))
return super.add(o);
return false;
}
public void add(int i, E o) {
super.add(i, o);
remainingObjects.add(i, o);
}
public void addAll(Collection<E> c) {
super.addAll(c);
remainingObjects.addAll(c);
}
public void addAll(int i, Collection<E> c) {
super.addAll(i, c);
remainingObjects.addAll(i, c);
}
/**
* Returns in a random way an element of the <code>RandomGetVector.
* The same element is returned once and only once while the * RandomGetVector#resetRandommethod hasn'been called. * * @return A random element which belongs to the * RandomGetVector * @throws ArrayIndexOutOfBoundsException * If all element have already been returned. */ public E getRandomElement() throws ArrayIndexOutOfBoundsException { int randomIndex = (int) (Math.random() * remainingObjects.size()); return remainingObjects.remove(randomIndex); } /** * Resets the random. Any element of the RandomGetVectormay * been returned after call to this method. * */ public void resetRandom() { remainingObjects = new Vector<E>(); remainingObjects.addAll(this); } public static void main(String[] args) { RandomGetVector<String> vector = new RandomGetVector<String>(); vector.add("Hack"); vector.add("Track"); vector.add("CCM"); vector.add("Java"); for (int i = 0; i < 5; i++) { System.out.println(vector.getRandomElement()); } } } </code> ;-) HackTrack |

