Функция для вывода вероятности в PHP

#php #function #probability #coin-flipping

#php #функция #вероятность #подбрасывание монеты

Вопрос:

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

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

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

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

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

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

Комментарии:

1. Что вы хотите сделать с результатом? Просто спрашиваю.

Ответ №1:

На самом деле это просто числа от 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. Как насчет создания одной строки, а затем ее разделения на массив в качестве второго шага? Просто идея.

Ответ №2:

То же, что и ответ @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);
}