Короче сделал сам, немного индусский код, но все работает
// количество цифр (К примеру 1-(1) 1-(2) 1-(3))
$n = 3;
// Количеств фиксированных вариантов (Можно посчитать при отправке через $_POST)
$k = 4;
$col_unic = pow($n, $k);
echo 'Факториал '.$col_unic.'
';
// В array можно положить значения через $_POST (В данном примере первые 4 фиксированы остальные будут заполнены автоматически)
$array = [
'1' => '1',
'2' => '3',
'3' => '1',
'4' => '2',
'5' => '',
'6' => '',
'7' => '',
'8' => '',
'9' => '',
'10' => '',
'11' => '',
'12' => '',
'13' => '',
'14' => '',
'15' => '',
];
$array_comb = array();
$array_all_comb = array();
// Количество строк
$count_combinations = 82;
// Проверяем количество возможных вариантов
$count_combinations = ($count_combinations >= $col_unic) ? $col_unic : $count_combinations;
function rand_chislo () {
global $array_comb;
global $array;
$array_comb[1] = ($array[1] == null) ? rand(1,3) : $array[1];
$array_comb[2] = ($array[2] == null) ? rand(1,3) : $array[2];
$array_comb[3] = ($array[3] == null) ? rand(1,3) : $array[3];
$array_comb[4] = ($array[4] == null) ? rand(1,3) : $array[4];
$array_comb[5] = ($array[5] == null) ? rand(1,3) : $array[5];
$array_comb[6] = ($array[6] == null) ? rand(1,3) : $array[6];
$array_comb[7] = ($array[7] == null) ? rand(1,3) : $array[7];
$array_comb[8] = ($array[8] == null) ? rand(1,3) : $array[8];
$array_comb[9] = ($array[9] == null) ? rand(1,3) : $array[9];
$array_comb[10] = ($array[10] == null) ? rand(1,3) : $array[10];
$array_comb[11] = ($array[11] == null) ? rand(1,3) : $array[11];
$array_comb[12] = ($array[12] == null) ? rand(1,3) : $array[12];
$array_comb[13] = ($array[13] == null) ? rand(1,3) : $array[13];
$array_comb[14] = ($array[14] == null) ? rand(1,3) : $array[14];
$array_comb[15] = ($array[15] == null) ? rand(1,3) : $array[15];
}
for ($i = 0; $i < $count_combinations; $i++) {
// Генерируем выборку
rand_chislo();
$array_result = '1-('.$array_comb[1].');2-('.$array_comb[2].');3-('.$array_comb[3].');4-('.$array_comb[4].');5-('.$array_comb[5].');6-('.$array_comb[6].');7-('.$array_comb[7].');8-('.$array_comb[8].');9-('.$array_comb[9].');10-('.$array_comb[10].');11-('.$array_comb[11].');12-('.$array_comb[12].');13-('.$array_comb[13].');14-('.$array_comb[14].');15-('.$array_comb[15].'),';
$unique = 0;
while ($unique < 1) {
if (in_array($array_result, $array_all_comb)) {
//echo "Такая выборка есть";
// Генерируем новую выборку
rand_chislo();
$array_result = '1-('.$array_comb[1].');2-('.$array_comb[2].');3-('.$array_comb[3].');4-('.$array_comb[4].');5-('.$array_comb[5].');6-('.$array_comb[6].');7-('.$array_comb[7].');8-('.$array_comb[8].');9-('.$array_comb[9].');10-('.$array_comb[10].');11-('.$array_comb[11].');12-('.$array_comb[12].');13-('.$array_comb[13].');14-('.$array_comb[14].');15-('.$array_comb[15].'),';
}
else {
// echo 'Новая уникальная выборка';
$unique = 1;
}
}
$array_all_comb += [$i => $array_result];
}
foreach ($array_all_comb as $key => $value) {
//echo 'KEY - '.$key.' 50;'.$value.'
';
$value = str_replace("(2)", "(X)", $value);
$value = str_replace("(3)", "(2)", $value);
echo ' 50;'.$value.'
';
}
echo '
Кол-во выборок '.count($array_all_comb);