Биномиальные коэффициенты
В комбинаторике биномиальный коэффициент означает, число всех возможных вариантов выборки k элементов из множества элементов n.
![]() Пример: Из множества n {1,2,3,4}, выбираем все возможные комбинации из двух элементов, k=2 {1,2} {1,3} {1,4} {2,3} {2,4} {3,4} Получается шесть возможных вариантов. ---------------------------------------- Как написать алгоритм перебирающий все эти варианты? |
Цитата:
Если хочешь их посмотреть то нужно строить таблицу элементарных исходов В цикле наверное пробегаться Берешь первый элемент, и подставляешь к нему оставшиеся по очереди(в данном случае 2 оставшихся) Потом делаешь то же самое с другими. Если юзаешь не сочетание а размещение (где порядок важен) То там получается все остальные добавляешь |
если в лоб, то так
var input = [1, 2, 3, 4]; var output = []; var len = input.length; for(var i = 0; i < len; i++) { var j = i + 1; for(; j < len; j++) { output.push([ input[i], input[j] ]); } } console.log(output); console.log(JSON.stringify(output)); но я не проверял :no: |
nerv_,
будет с повтрениями 1,2 2,1 и тп. в моём случае порядок не важен |
я так подумал, что мне проще один раз этот массив вычислить (пусть не самым рациональным способом) и запихать куда нибудь в базу
|
nerv_,
Да) Цитата:
Есть 2 цифры и пофиг в каком они положении |
l-liava-l,
Цитата:
![]() http://www.matburo.ru/tv_komb.php p.s.: вы достали, я думал поможете, а вы тока моск насилуете :D :) |
Tim, я не совсем пойму причем тут эта формула,
![]() Она поможет найти общее кол-во возможных комбинаций, а не их самих. |
Tim,
k всегда 2? |
Цитата:
Цитата:
http://pokercardplay.net/articles/13...naciy_v_pokere |
Tim,
так будет 5 for function get() { var c = []; for (var k1 = 0; k1 < 48; k1++) { for (var k2 = k1 + 1; k2 < 49; k2++) { for (var k3 = k2 + 1; k3 < 50; k3++) { for (var k4 = k3 + 1; k4 < 51; k4++) { for (var k5 = k4 + 1; k5 < 52; k5++) { c.push([k1, k2, k3, k4, k5]) } } } } } return c } |
рони,
очень похоже на правду |
Цитата:
var input = [1, 2, 3, 4, 5]; var output = []; var len = input.length; // var k = 3; for(var i = 0; i < len - 2; i++) { for(var j = i + 1; j < len - 1; j++) { for(var q = j + 1; q < len; q++) { output.push([ input[i], input[j], input[q] ]); } } } console.log(JSON.stringify(output)); формула: var count = c(5) / (c(5 - 3) * c(3)); console.log(count); function c(n) { for(var i = 1, len = n + 1, r = i; i < len; i++) { r *= i; } return r; }Тем не менее, не очень правильно задавать k кол-вом циклов :) |
кто сможет решить однострочником-генератором из ES6 ? интересно взглянуть и поизучать
|
Цитата:
|
Цитата:
|
Цитата:
Сделаешь?) |
Цитата:
|
Часовой пояс GMT +3, время: 22:30. |