<?php
function Ct($k, $n) {
$c = 1;
for ($i = $n; $i <= $n + $k - 1; $i += 1) {
$c *= $i;
}
for ($i = 2; $i <= $k; $i += 1) {
$c /= $i;
}
return $c;
}
function combination($k, $n) {
$numbers= [];
$base = 0;
while ($k > 0) {
$total = Ct($k, $n - $base);
$rand = rand(0, $total - 1);
for ($num = 0; $num < $n - $base; $num += 1) {
$prob = Ct($k - 1, $n - $base - $num);
if ($rand < $prob) {
$numbers[] = $num + $base;
$k -= 1;
$base += $num;
break;
}
$rand -= $prob;
}
}
return $numbers;
}
print implode(', ', combination(4, 7)) . "\n";
в точке, где цель есть, луч отразится от целиНо не обязательно в сторону приёмника.