рони, ++
Да, скоростью я был удивлён еще в табличке
================
Вариант рандомного массива без повторений с вызовом Math.random() единожды на каждый элемент:
function indRand(lng){
var a = [],i,out=[],n=lng;
for(i=0;i<lng;i++)a[i]=i;
while (n--)out.push(a.splice(Math.floor((n+1)*Math.random()),1)[0]);
return out;
}
var arr = [],ind = indRand(20),k;
for(i=0;i<20;i++) arr[i]=ind[i]%(k=i<10?20:3);
alert(arr)
alert(arr.join(''))