If you want something less biased, don't round towards negative values.
Replace
Math.floor(Math.random() * 30) - 15
with
Math.round(Math.random() * 30 - 15)
I just made a small test with this code :
var N = 1000000;
for (var j=0; j<20; j++) {
var sum = 0;
for (var i=N; i-->0;) sum += Math.round(Math.random() * 30 - 15);
console.log(sum/N);
}
It seems OK (open the console)