Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Math.random несколько объектов (https://javascript.ru/forum/misc/28701-math-random-neskolko-obektov.html)

oneguy 02.06.2012 20:17

Вот реализация получше, в 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.