Помогите решить задачку! Есть 100 чисел 1, 2, 3, .. n .. 99, 100 Нужно выбрать уникальные комбинации по 5 чисел Можно так n+5*i+i, i от 1 до 5 Каким еще способом?
можно рандомные числа использовать. создаем массив из пяти элементов, которые тоже массивы. два-три вложенных цикла.
inline создать массив с числами. массив с флагами занято/свободно рандом, если число занято - еще раз ( в бесконечном цикле ), если свободно - пишем тупо но в 2010 году по скорости большой разницы с умным алгоритмом не будет...
igordata если имеется в виду, что числа вообще не должны повторяться, то да. тогда задача не до конца сформулирована, ибо 1 3 4 5 6 1 4 5 6 7 тоже уникальные комбинации относительно друг друга.
PHP: <?php $a = array(); for ($i = 0; $i < 5; $i++) { $b = rand (1,100); if (in_array($b, $a)) { $i--; } else { $a[]=$b; } } var_dump($a); ?>
igordata engager в каждой комбинации не должно быть два одинаковые числа сколько таких комбинаций можно построить из 100 чисел 1, 2, 3, .. n .. 99, 100 вроде только 20 или не правильно подсчитал?
Количество таких комбинаций - Гугл, 2 минуты поиска: http://combinatoric.ru.gg/%26%231057;%2 ... 31071;.htm
Сочетания без повторений — комбинаторные соединения из n элементов по m, составленные из этих элементов и отличающиеся друг от друга только составом. Сочетания с повторениями — комбинаторные соединения из n элементов по m, составленные из этих элементов без учета порядка с возможностью многократного повторения предметов.
я изложил простейший способ =) чем он вам не нра? inline такого быть не может если 1,2,3 и 3,2,1 - разные, то может.
Volt(220) следуя формуле из 7 чисел по 5 в комбинации можно сделать 21 разный вариант по моему 1 если нужно, чтобы более двух повторений одного числа небыло 12345 1267 и все 3,4,5 поставить и уже более двух повторений
о! я вспомнил сделать массив for ($i... { $a[] = $i;} потом array_rand($a), а потом array_shift($a) из него по пять раз до упора
Одна комбинация это - 12345. 12345 и 12346 это уже две комбинации и в каждой из них нет одинаковых чисел.