Random java

Fermé
khaoula1993 Messages postés 1 Date d'inscription dimanche 7 décembre 2014 Statut Membre Dernière intervention 7 décembre 2014 - 7 déc. 2014 à 11:03
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 11 déc. 2014 à 16:09
Bonjour,
est-ce que je peut faire random en java dans un intervalle privé d'un nombre ! par exemple random entre [0,3] privé de 2 ?????? c'est à dire il peut me donner seulement 0 ou 1 ou 3
A voir également:

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
7 déc. 2014 à 11:48
Bonjour,

De base non, c'est trop spécifique pour être inclus dans l'API.

Mais ce n'est pas très compliqué de le faire toi même.
Pour prendre un entier aléatoire entre X et Y privé de Z, tu tires un entier entre X et Y-1, et s'il est égal à Z tu renvoies Y.
0
MasterMbg Messages postés 7 Date d'inscription lundi 26 novembre 2012 Statut Membre Dernière intervention 12 mars 2015
11 déc. 2014 à 15:40
Je ne vois pas trop quoi correspond ta solution à son problème. Désolé...
L'idée était plutot bonne au départ mais à l'aterissage non. Car il voudrait renvoyer un entier P compris entre X et Y (les deux inclus) et qu'il soit différent de Z. Il ne voudrait renvoyer rien d'autre que cet entier tiré au hasard si l'on dire ça. Moi je pense que mieux serait de tiré un entier (d'une manière aléatoire) dans l'intervalle [X,Y], de le comparer ensuite à Z. Si P!=Z alors renvoyer P sinon faire autre chose du genre tiré un autre entier ou je ne sais quoi...
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
11 déc. 2014 à 16:09
Ma solution consiste à tirer un nombre sur un intervalle réduit, au lieu de prendre [X,Y] je prends [X,Y-1] et dans le cas où c'est égal à Z, on renvoie Y. Ce qui fait qu'on a la même probabilité de tirer Y que n'importe quel autre nombre. C'est juste qu'on a "déplacé" Y dans l'intervalle à la place de Z.

Exemple : pour tirer [1,6] privé de 3. Je tire entre [0,5] et si c'est 3 je donne 6. C'est comme si j'avais "déplacé" le 6 à la place du 3, et que j'avais donc tiré dans l'ensemble {1,2,6,4,5}

La solution "tiré un autre entier" est toujours maladroite, car elle n'est pas déterministe. C'est à dire que tu ne sais pas exactement combien de fois tu vas devoir recommencer. Avec ma solution (qui est mathématiquement correcte) tu ne fais qu'un seul tirage dans tous les cas.
0