Générer un nombre aléatoire différents des nombres existants
Résolu/Fermé
neocol
Messages postés
63
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
6 février 2016
-
Modifié par neocol le 18/07/2014 à 11:49
neocol Messages postés 63 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 6 février 2016 - 23 juil. 2014 à 15:44
neocol Messages postés 63 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 6 février 2016 - 23 juil. 2014 à 15:44
A voir également:
- Générer un nombre aléatoire différents des nombres existants
- Code binaire des nombres - Guide
- Nombre facile - Télécharger - Outils professionnels
- Generer mot de passe - Télécharger - Sécurité
- Comment générer un qr code - Guide
3 réponses
Millaï
Messages postés
171
Date d'inscription
dimanche 8 juillet 2012
Statut
Membre
Dernière intervention
21 mars 2015
26
Modifié par Millaï le 18/07/2014 à 12:54
Modifié par Millaï le 18/07/2014 à 12:54
Bonjour,
Normalement ça marche !
public class un {
public static void main(String[] args)
{
int taille;
int array[] = {0,2,5,7,11};
taille = (array.length);
int tab[] = new int[taille];
for(int i = 0; i < taille-1; i++)
{
int higher = array[i+1], lower = array[i]+1;
int random = (int)(Math.random() * (higher-lower)) + lower;
tab[i]= random;
}
int nbAlea = (int)(Math.random()*taille);
int resultat = tab[nbAlea];
if (resultat == 0) resultat++;
System.out.println(resultat);
}
}
Normalement ça marche !
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
Modifié par KX le 18/07/2014 à 19:10
Modifié par KX le 18/07/2014 à 19:10
Bonjour,
Tu peux utiliser un Set en parallèle de ton tableau. Quand tu utilises la méthode add, ça renvoie true si l'ensemble a été modifié ou false si la valeur ajoutée existait déjà.
Exemple : je rempli aléatoirement un tableau avec des valeurs différentes.
Remarque : pour éviter le passage inutile vers un nombre aléatoire double pour le repasser en int avec ta formule
Tu peux utiliser un Set en parallèle de ton tableau. Quand tu utilises la méthode add, ça renvoie true si l'ensemble a été modifié ou false si la valeur ajoutée existait déjà.
Exemple : je rempli aléatoirement un tableau avec des valeurs différentes.
public static void main(String...args) { int lower = 1, higher = 10; int[] tab = new int[5]; HashSet<Integer> set = new HashSet<Integer>(tab.length); for (int i = 0; i < tab.length; i++ ) { int random; do { random = (int) (Math.random() * (higher - lower)) + lower; } while ( !set.add(random)); tab[i] = random; } System.out.println(Arrays.toString(tab)); }
Remarque : pour éviter le passage inutile vers un nombre aléatoire double pour le repasser en int avec ta formule
(int) (Math.random() * (higher - lower)) + lower;on peut générer directement des entiers aléatoires avec la classe Random.
private static final Random RANDOM = new Random(); int random = RANDOM.nextInt(higher-lower) + lower;
neocol
Messages postés
63
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
6 février 2016
1
23 juil. 2014 à 15:44
23 juil. 2014 à 15:44
Bonjour,
Je vous remercie pour votre aide précieux, je vous laisse ce que j'ai fait et ça marche pour moi.
package sdfsdf;
/**
* @author Youness Mourtaji
*
*/
public class un {
public static void main(String[] args)
{
String [] delivriesReferences = {"v1.1","v1.20","v1.30","v1.56","v1.123","v1.147","v1.201","v1.253"};
String random = myVersion(1,260);
System.out.println("random : " + random);
}
public static String myVersion(int lower, int higher) {
int random = (int)(Math.random() * (higher-lower)) + lower;
int i=0;
String version = null;
version = toString1(random);
String [] delivriesReferences = {"v1.1","v1.20","v1.30","v1.56","v1.123","v1.147","v1.201","v1.253"};
int taille = delivriesReferences.length;
for(int j=0; j<taille; j++)
{
if (version==delivriesReferences[j])
{
int max = Integer.valueOf(delivriesReferences[j+1]).intValue();
int min = Integer.valueOf(delivriesReferences[j]+1).intValue();
random = (int)(Math.random() * (max-min)) + min;
version = toString1(random);
}
}
return version;
}
//méthode de concaténation des chaines de caractéres
public static String toString1(int version)
{
final StringBuilder builder = new StringBuilder();
builder.append("v1.").append(version);
return builder.toString();
}
}
Je vous remercie pour votre aide précieux, je vous laisse ce que j'ai fait et ça marche pour moi.
package sdfsdf;
/**
* @author Youness Mourtaji
*
*/
public class un {
public static void main(String[] args)
{
String [] delivriesReferences = {"v1.1","v1.20","v1.30","v1.56","v1.123","v1.147","v1.201","v1.253"};
String random = myVersion(1,260);
System.out.println("random : " + random);
}
public static String myVersion(int lower, int higher) {
int random = (int)(Math.random() * (higher-lower)) + lower;
int i=0;
String version = null;
version = toString1(random);
String [] delivriesReferences = {"v1.1","v1.20","v1.30","v1.56","v1.123","v1.147","v1.201","v1.253"};
int taille = delivriesReferences.length;
for(int j=0; j<taille; j++)
{
if (version==delivriesReferences[j])
{
int max = Integer.valueOf(delivriesReferences[j+1]).intValue();
int min = Integer.valueOf(delivriesReferences[j]+1).intValue();
random = (int)(Math.random() * (max-min)) + min;
version = toString1(random);
}
}
return version;
}
//méthode de concaténation des chaines de caractéres
public static String toString1(int version)
{
final StringBuilder builder = new StringBuilder();
builder.append("v1.").append(version);
return builder.toString();
}
}