БлогNot. PHP: как просто перебрать все комбинации n исходов для k событий

PHP: как просто перебрать все комбинации n исходов для k событий

На самом деле, ответ есть в предыдущей заметке об исходах шахматных партий. С точки зрения комбинаторики, при решении задачи о переборе всех вариантов исходов для k событий, каждое из которых может совершиться только одним из n способов, мы имеем размещения с повторениями, но никаких ручных перестановок элементов в массивах или рекурсий выдумывать не нужно, достаточно перебрать все числа от 0 до nk в системе счисления с основанием n, сохраняя лидирующие нули.

Тогда, например, при n=3 и k=5 значение 00012 будет соответствовать случаю, когда первые три события завершились первым исходом, четвёртое событие - вторым исходом, а пятое - третьим.

Вот воплощение этой несложной идеи в коде:

<?php
 $n = 3; $k = 5; 
 $a = floor(pow($n,$k));
 for ($i=0; $i<$a; $i++) {
  $s=str_pad(base_convert ($i,10,$n),$k,'0',STR_PAD_LEFT);
  echo $s.'<br>';
 }
?>

28.03.2018, 21:01 [2001 просмотр]


теги: php алгоритм

К этой статье пока нет комментариев, Ваш будет первым