Cómo generar números aleatorios positivos y negativos en java

Estoy intentando generar enteros aleatorios sobre el rango (-32768, 32767) del tipo de datos primitivos corto. El objeto aleatorio java solo genera números positivos. ¿Cómo podría crear números aleatoriamente en ese intervalo? Gracias.

Usted al azar encendido (0, 32767+32768) luego resta por 32768

 Random random=new Random(); int randomNumber=(random.nextInt(65536)-32768); 
 public static int generatRandomPositiveNegitiveValue(int max , int min) { //Random rand = new Random(); int ii = -min + (int) (Math.random() * ((max - (-min)) + 1)); return ii; } 

Genera números entre 0 y 65535 y luego resta 32768

Esta es una vieja pregunta que sé, pero um …

 n=n-(n*2) 

([mi tipo de primitiva doble compatible aquí]) (Math.random () * [mi valor máximo aquí] * (Math.random ()> 0.5? 1: -1))

ejemplo:

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

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

En caso de que la gente esté interesada en la versión doble (tenga en cuenta que esto se rompe si pasa MAX_VALUE o MIN_VALUE):

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