Функция для вывода вероятности в PHP - PullRequest
1 голос
/ 09 октября 2011

Я пытаюсь найти функцию, которая принимает число и выдает ожидаемые результаты следующим образом:

если вход = 1 тогда вывод должен быть Array{'0','1'}

если вход = 2 тогда вывод должен быть Array{'00','01','10','11'}

если вход = 3 тогда вывод должен быть Array{'000','001','010','011','100','101','110','111'}

и т. Д. Это похоже на подбрасывание нескольких монет.

Я не знаю, есть ли функция в php, которая делает это, но если нет, может кто-нибудь показать мне, как это делается?

Ответы [ 2 ]

6 голосов
/ 09 октября 2011

На самом деле это просто числа от 0 до 2 ^ {input} -1 в двоичной записи

$max = pow(2, $input);
$result = array();
for ($i = 0; $i < $max; $i++) {
  $result[] = str_pad(base_convert($i, 10, 2), $input, 0, STR_PAD_LEFT);
}
1 голос
/ 09 октября 2011

То же, что и ответ @KingCrunch, но более кратко:

foreach (range(0, pow(2, $input)) as $i)
{
    $result[] = sprintf('%0' . $input . 'b', $i);
}

Или, если вам не нравится sprintf:

foreach (range(0, pow(2, $input)) as $i)
{
    $result[] = str_pad(decbin($i), $input, 0, STR_PAD_LEFT);
}
...