Quote Originariamente inviata da hopeway Visualizza il messaggio
Salve, dovrei creare un programma dove si generino numeri casuali compresi tra -10 e 10. Io ho utilizzando la seguente sintassi:
codice:
int rand = (((int)(Math.random()))%21-10);
Tuttavia mi genera sempre il numero -10.
Perché fa prima il cast a int ! Nota infatti

( ((int)(Math.random())) %21-10)

Insomma ... hai messo troppe parentesi .. e male. Oltretutto Math.random() restituisce valori tra 0 (compreso) e 1 (ESCLUSO). Quindi serve una moltiplicazione ... non il resto %.

Quindi semplicemente:

codice:
int rand = (int) (Math.random() * 21) - 10;

Prima esegue Math.random(), poi moltiplica per 21 (range 0...20,999999...) poi converte a int (range 0...20) poi sottrae 10 (range -10...10).