2011-10-08 40 views
1

我試圖找到一個函數,它的數和如下輸出預期的結果:功能在PHP輸出概率

如果輸入= 1 然後輸出應爲Array{'0','1'}

如果輸入= 2 然後輸出應爲Array{'00','01','10','11'}

如果輸入= 3 然後輸出應該Array{'000','001','010','011','100','101','110','111'}

等on.It的類似於翻轉一些硬幣。

我不知道是否有一個功能在PHP中這樣做,但如果沒有人可以請告訴我它是如何做到的?

+0

你想對結果做什麼?只是問問。 – hakre

回答

6

其實是剛剛從0到2^{}輸入-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); 
} 
+0

如何創建一個字符串,然後將其作爲第二步拆分爲數組?只是一個想法。用於快速數學計算的 – hakre

+0

+1。 – punit

+0

非常感謝。這正是我所期待的。 – Songo

1

同@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); 
}