2011-10-08 3 views
1

J'essaie de trouver une fonction qui prend un nombre et produit les résultats attendus comme suit:fonction de la probabilité de sortie de PHP

si l'entrée = 1 alors sortie doit être Array{'0','1'}

si l'entrée = 2 alors la sortie doit être Array{'00','01','10','11'}

si entrée = 3 puis sortie doit être Array{'000','001','010','011','100','101','110','111'}

et ainsi de on.It semblable à retourner un certain nombre de pièces de monnaie.

Je ne sais pas s'il y a une fonction dans php qui fait cela, mais s'il n'y en a pas, quelqu'un pourrait-il me montrer comment cela se fait?

+0

Que voulez-vous faire avec le résultat? Je ne faisais que demander. – hakre

Répondre

6

En fait, ce ne sont que les chiffres de 0 à 2^{entrée} -1 en notation binaire

$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

Qu'en est-il de la création d'une chaîne de caractères, puis de la découper en matrice comme deuxième étape? Juste une idée. – hakre

+0

+1 pour un calcul mathématique rapide. – punit

+0

Merci beaucoup. C'est exactement ce que je cherchais. – Songo

1

Comme @KingCrunch réponse, mais plus concise:

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

Ou, si vous n'aimez pas sprintf:

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