Générer un nombre aléatoire différents des nombres existants
Résolu
neocol
Messages postés
63
Date d'inscription
Statut
Membre
Dernière intervention
-
neocol Messages postés 63 Date d'inscription Statut Membre Dernière intervention -
neocol Messages postés 63 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Générer un nombre aléatoire différents des nombres existants
- Nombre de jours entre deux dates excel - Guide
- Nombre facile - Télécharger - Outils professionnels
- Code binaire des nombres - Guide
- Ascii nombre de caractères - Guide
- Comment générer un qr code - Guide
3 réponses
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 !
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;
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();
}
}