web-dev-qa-db-fra.com

Comment générer des nombres positifs et négatifs aléatoires en Java

J'essaie de générer des entiers aléatoires sur la plage (-32768, 32767) du type de données primitif short. L'objet aléatoire Java génère uniquement des nombres positifs. Comment pourrais-je créer au hasard des nombres sur cet intervalle? Merci.

27
user455497

Vous aléatoire sur (0, 32767+32768) puis soustrayez par 32768

52
pinichi
Random random=new Random();
int randomNumber=(random.nextInt(65536)-32768);
22
Truth
public static int generatRandomPositiveNegitiveValue(int max , int min) {
    //Random Rand = new Random();
    int ii = -min + (int) (Math.random() * ((max - (-min)) + 1));
    return ii;
}
5
duggu

Générez des nombres compris entre 0 et 65535, puis soustrayez 32768

4
jcopenha

C'est une vieille question que je connais mais euh ....

n=n-(n*2)
3
Ethan

([mon type primitif double compatible ici]) (Math.random () * [ma valeur max ici] * (Math.random ()> 0.5? 1: -1))

exemple:

// need a random number between -500 and +500
long myRandomLong = (long)(Math.random() * 500 * (Math.random() > 0.5 ? 1 : -1));
1
Russ Jackson

(Math.floor ((Math.random () * 2))> 0? 1: -1) * Math.floor ((Math.random () * 32767))

0
UP209D

Si la version double intéresse les utilisateurs (notez que cette erreur échoue si MAX_VALUE ou MIN_VALUE est passé): 

private static final Random generator = new Random();
public static double random(double min, double max) {
    return min + (generator.nextDouble() * (max - min));
 }
0
Brian