2011-06-17 15 views
2

我有數學面向問題。在這裏我喜歡得到所有可能的組合 並期待存儲在數組中。如何在給定的數字中創建數組的可能概率(組合)在php

例如: -

1 digit = 10 (0,1,2,3,....9) 
2 digit = 100 (00,01,02,03,...) 
我有公式找到的可能性數

10^n -1。但我不知道我怎樣才能得到的值。

function get_combinations(5){ 
//10^5 -1 = 99999 values 

} 

函數的結果應該是

00000,00001,00010,00100,....

在陣列

不喜歡

0,1 ,2,...,00,01,03,... 99999

編輯

我也喜歡與數字混合一些字母

結果像

0000a,000a1,000z1,00001,00000,...

謝謝提前

+0

您可以從0到10^5 -1計數並在必要時添加前導零。 –

+0

我覺得把所有東西都放在一個數組中是錯誤的解決方案。您可能會一次使用數組值*,爲什麼要預先計算它們,而不僅僅是根據需要在循環內部生成它們? – Jon

+1

'2位= 99(00,01,02,03,...)'< - 爲什麼?哪個數字不計入?我看到'00'被計算,我猜'99'也被計算在內,所以有100個組合,而不是99. – binaryLV

回答

4
$n = ???; 
$array = range(0, pow(10, $n)-1); 

是的,有沒有整數開始與zero

所以,逼債懶得去構建一個數組開始與領先zero
當你需要輸出str_pad可應用於


function get_combinations($n) 
{ 
    return range(0, pow(10, $n)-1); 
} 

$array = get_combinations(5); 
$pad = strlen(max($array)); 

// to output 
echo str_pad($array[0], $pad, 0, STR_PAD_LEFT); 
+0

我需要數組的結果。你可以給出建議 – Gowri

+0

結果已經在數組中......不太清楚還缺少什麼? – ajreal

+0

感謝它的工作。 – Gowri

1

您不能有一個整數,即0000,因爲那只是0

從0到9的使用the range() function得到所有的數字:

$array = range(0,9); // array(0,1,2,3,4,5,6,7,8,9) 

而且都更大的數字。

如果您希望它們作爲字符串使用sprintf或與重新格式化該數組相關。

或者只是使用一個for(循環:)

2
$result = array(); 
$count = pow(10,$x); 
for ($i = 0, $i < $count, $i++) { 
    $result[] = str_repeat('0', $x - strlen($i)) . $i; 
} 
0
function get_combinations($exp){ 

    $max = pow(10, $exp) - 1; 

    for ($i = 0; $i <= $max; $i++) $comb[] = str_pad($i, $exp, '0', STR_PAD_LEFT); 

    return $comb; 

} 
0

如何:

$n = 3; 
function format($x) { 
    global $n; 
    return sprintf("%0${n}d", $x); 
} 
$arr = array_map('format', range(0, pow(10,$n)-1));