Il numero casuale lo puoi generare anche con l'sql così

SELECT (FLOOR(-20 + (RAND() * 40)))/10;


esempio
codice:
select cam,cam + (FLOOR(-20 + (RAND() * 40)))/10 as variazione
from tab
se il funzionamento è quello che ti aspetti lo applichi all'update.