OVH Cloud OVH Cloud

Random entre -2 et 2 sans 0

6 réponses
Avatar
Moustik
Bonjour

Je fait un programme en J2ME et j'ai besoin de generer un nombre entre -2
et 2 mais sans 0. En breff en nombre positif ou negatif mais excluant zero.


Random rnd = new Random();
entier = rnd.nextIt(3);

pour generer un nombre entre 0 et 2 mais je ne voit pas comment faire pour
recuperer un nombre ebtre -2 et 2.

Comment fait on?

Merci d'avance pour votre reponse.

6 réponses

Avatar
Rémy
"Moustik" a écrit dans le message de news:

Bonjour

Je fait un programme en J2ME et j'ai besoin de generer un nombre entre -2
et 2 mais sans 0. En breff en nombre positif ou negatif mais excluant
zero.


Random rnd = new Random();
entier = rnd.nextIt(3);

pour generer un nombre entre 0 et 2 mais je ne voit pas comment faire pour
recuperer un nombre ebtre -2 et 2.

Comment fait on?

Merci d'avance pour votre reponse.


entre -2 et 2 :
entier = rnd.nextIt(5)-2;

Pour éliminer le zéro, deux solutions :
- soit on recommence tant que le résultat est zéro,
- soit on en génère un entre 1 et 2 et on choisit le signe après:
entier = rnd.nextIt(2)+1;
if (rnd.nextIt(2)<1) entier = entirt * -1;


e

Avatar
ZebX
Bonjour

Je fait un programme en J2ME et j'ai besoin de generer un nombre entre -2
et 2 mais sans 0. En breff en nombre positif ou negatif mais excluant zero.



En brefff, une valeur :
- aléatoirement positive ou négative
- et ensuite valant aléatoirement 1 ou 2 en valeur absolue.

Ou alors :
- un nombre aléatoire entre 1 et 4
- dont 1 et 2 valent -2 et -1 et 3 et 4 valent 1 et 2

Si j'ai bon, tu partageras tes bons points avec moi ?


--
ZebX - Mécano-boucher

Avatar
Samuel Krempp
le Friday 22 April 2005 16:48, écrivit :

entre -2 et 2 :
entier = rnd.nextIt(5)-2;

Pour éliminer le zéro, deux solutions :
- soit on recommence tant que le résultat est zéro,
- soit on en génère un entre 1 et 2 et on choisit le signe après:
entier = rnd.nextIt(2)+1;
if (rnd.nextIt(2)<1) entier = entirt * -1;


c'est un peu du gâchis de générer un nombre aléatoire supplémentaire pour ça
(à priori c'est assez couteux).

je ferais plutôt (comme le suggère un peu zebx) :

n = rnd.nextIt(4)-2;
if(n>=0)
++n;

--
Samuel

Avatar
Vincent YSMAL
Bonjour

Je fait un programme en J2ME et j'ai besoin de generer un nombre entre -2
et 2 mais sans 0. En breff en nombre positif ou negatif mais excluant zero.


Random rnd = new Random();
entier = rnd.nextIt(3);

pour generer un nombre entre 0 et 2 mais je ne voit pas comment faire pour
recuperer un nombre ebtre -2 et 2.

Comment fait on?

Merci d'avance pour votre reponse.
Une solution serait un tableau de 4 int, -2, -1, 1, 2

ensuite un random entre 0 et 3, et tu prend dans le tableau.
Voila ma facon de voir, moins de tests

Avatar
pierre
Vincent YSMAL wrote:

Bonjour
Je fait un programme en J2ME et j'ai besoin de generer un nombre entre
-2 et 2 mais sans 0. En breff en nombre positif ou negatif mais
excluant zero.


Random rnd = new Random();
entier = rnd.nextIt(3);

pour generer un nombre entre 0 et 2 mais je ne voit pas comment faire
pour recuperer un nombre ebtre -2 et 2.

Comment fait on?

Merci d'avance pour votre reponse.


Une solution serait un tableau de 4 int, -2, -1, 1, 2
ensuite un random entre 0 et 3, et tu prend dans le tableau.
Voila ma facon de voir, moins de tests


Math.ramdom génére un nombre entre 0 et 1.
La formule est donc 4 * Math.ramdom -2
Il te reste à exclure 0.

Cordialement.
Pierre.


Avatar
Samuel Krempp
le Friday 22 April 2005 19:57, écrivit :

Vincent YSMAL wrote:
Une solution serait un tableau de 4 int, -2, -1, 1, 2
ensuite un random entre 0 et 3, et tu prend dans le tableau.
Voila ma facon de voir, moins de tests



euh, remplacer _un_ test par un lookup dans un tableau, c'est à coup sûr
perdant. mais sinon c'est globalement la même idée, à partir d'un tirage
parmi 4 valeurs, on "mappe" ces 4 valeurs vers celles qui nous intéressent.
(ie on applique une fonction injective dont l'ensemble de départ est ces 4
valeurs, et l'ensemble d'arrivée les 4 valeurs voulues)

Math.ramdom génére un nombre entre 0 et 1.
La formule est donc 4 * Math.ramdom -2
Il te reste à exclure 0.


certes, mais c'est bien ce qui pose problème a moustik.
la question est précisément d'exclure 0.
et sinon son utilisation de Random est plus pratique que Math.random en
l'occurence

--
Samuel