function indRand(a){
var out=[],n=a.length; a=a.slice(0);
while (n--){out.push(a.splice(Math.floor((n+1)*Math.random()),1)[0]);}
return out;
}
var tim = +new Date
var arr='1234567890'.split('');
n=1000000;
while (n--){
var b = indRand(arr);
}
alert((+new Date-tim)/1000);
Array.prototype.shuffle = function(min,max) {
min = min || 0;
max = ++max || this.length;
var len = max - min;
max = len - this.length;
this.length = len;
for (var a = this.length-1; 0 <= a; a--) {
if(a < max) {break}
var b = Math.floor(Math.random() * a),
c = void 0 === this[b] ? (b + min) : this[b];
this[b] = void 0 === this[a] ? (a + min) : this[a];
this[a] = c
}
this.reverse();
this.length -= max;
return this
};
var tim = +new Date
var arr='1234567890'.split('');
n=1000000;
while (n--){
var arr =arr.shuffle();
}
alert((+new Date-tim)/1000);
Твой Вариант значительно быстрее!
Гы, а на длинных массивах, длиной более 100, преимущество в 8 и более раз!