function rand(min, max){
var exclude = Array.prototype.slice.call(arguments, 2).sort(function(a,b){return b-a}),
i = exclude.length;
max = max + 1 - min - i;
var result = Math.floor(Math.random()*max) + min;
while(i--) if(result >= exclude[i]) result++;
return result
}
rand(1, 4, 1, 2, 3) //4
Это если быть уверенным во входных данных, а так стоит добавить проверок и RangeError, на всякий случай.)