Вот реализация получше, в O(n) операций вместо O(n^2):
/* Эта функция выбирает случайное размещение m чисел из набора 0, 1, ..., n-1 и возвращает его в виде массива. Например: selectRandom(20, 8) -> [1,12,9,0,19,3,5,10] */ function selectRandom(n, m) { var a=[], result=[]; for (var i=0; i<n; i++) a.push(i); for (i=n; i>n-m; i--) { var c=Math.floor(Math.random()*i); result.push(a[c]); a[c]=a[i-1]; } return result; } |
Часовой пояс GMT +3, время: 20:51. |