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).