Изменения

Перейти к: навигация, поиск

Методы генерации случайного сочетания

3 байта убрано, 20:48, 16 декабря 2014
Решение за время O(n)
Для более быстрого решения данной задачи воспользуемся следующим алгоритмом: пусть задан для определенности массив <tex>a</tex> размера <tex>n</tex>, состоящий из <tex>k</tex> единиц и <tex>n - k</tex> нулей. Применим к нему [[Метод генерации случайной перестановки, алгоритм Фишера-Йетса|алгоритм генерации случайной перестановки]]. Тогда все элементы <tex>i</tex>, для которых <tex>a[i] = 1</tex>, включим в сочетание.
===Псевдокод===
*<tex>\mathtt{arrayOfElements}</tex> — массив, в котором находятся все элементы множества <tex>\mathtt{S}</tex>,
*<tex>\mathtt{randomShuffle()}</tex> — функция генерации случайной перестановки.
 
===Псевдокод===
 
<code>
'''int[]''' randomCombination('''int[]''' arrayOfElements, '''int''' n, '''int''' k):

Навигация