2012-10-03 1 views
0

이 예에서 가능한 조합 수를 찾는 공식은 무엇입니까? A-Z와 0-9에서 4자를 생성하지만 교대로 표시됩니다. 예 : L7W8, Q6N6, H3P1, 등 번갈아 나타나는 문자 집합에서 가능한 조합 수에 대한 수식은 무엇입니까?

는 PHP 코드에서 설명하기 :

$length = 4; 

$pool_1 = explode(',', 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z'); 
$pool_2 = explode(',', '1,2,3,4,5,6,7,8,9,0'); 

$s = ''; 

for ($i = 0; $i < $length; $i++) 
    $s.= ($i % 2) ? $pool_2[array_rand($pool_2)] : $pool_1[array_rand($pool_1)];   

echo $s; 

을 $ 길이가 4 인 경우, 조합 가능한 수를 얻을 수있는 공식은 무엇인가?

답변

1

는 대답은 length = 4

설명에 대한 26 * 10 * 26 * 10이다 : 첫 번째 위치에 대한

, 당신은 (26 개)의 선택을 얻었다. 두 번째로 10을 얻을 수 있습니다. 26 * 10 (세 번째 포지션), 다시 26 가지 선택을 할 수 있습니다. 그래서 당신은 가능한 변화를 얻을 것이다 : (26 * 10) * 26

등등 ..

combinatorics 기본입니다. 26 중 1을 선택하면 수학적으로 이 표시되고 이는 26/1 = 26과 같습니다. 당신이 독특한 조합을 찾는 경우

NCR = (N.N-1.N-2 .. N-R-1)/(1.2.3 .. R)

0

최종 문자열의 각 문자에 대해 가능한 삽입 수를 곱합니다.

Choice of A-Z = 26 
Choice of 0-9 = 10 

Combining A-Z and 0-9: 26 * 10 = 260 
Combining A-Z and A-Z: 26 * 26 = 676 
Combining 0-9, A-Z, 0-9: 10 * 26 * 10 = 2600 
1

변경 사항은 총 선택 수에 영향을주지 않습니다.

간단히 26 * 10 * 26 * 10입니다.

문자로 반복을 허용하지 않으면 26 * 10 * 25 * 10이됩니다.

0

는 다음 공식은 다음과 같습니다

(26 * 25)/2! * (10 * 9)/2! = 14625

분석 :

위의 공식을 사용하면 문자와 숫자 모두에 대해 고유 한 조합을 원하는 것으로 가정합니다. 예를 들어, B1A0은 시퀀스의 첫 번째 값이고 Z9Y8은 마지막 값이됩니다. A0B1, A1B0 또는 B0A1은 모두 중복되며 위 공식에 반영되지 않습니다. 이들도 허용 될 수 있다면, 다음 수식으로 감소 : 중복 문자와 숫자가 허용 할 수있는 경우

26 * 25 * 10 * 9 = 58500

, AA00 예를 들어, 다음 공식은 다음과 같습니다

26 * 26 * 10 * 10 = 67600

나는 또한 두 개의 변수에 $ 길이를 나누는 제안했다. 하나의 변수는 글자에 대한 것이고 다른 변수는 숫자에 대한 것입니다.당신이 독특한 조합을 찾는 경우에 따라서, 예를 들어, 다음 코드는 다음과 같이 보일 수 있습니다 : 당신이 $ NumbersLen 또는 $ LettersLen 항상 2 알고 있다면

$NumLetters = 26; 
$NumNumbers = 10; 
$LettersLen = 2; 
$NumbersLen = 2; 

$NumCombos = $NumLetters * ($NumLetters-1)/gmp_fact($LettersLen) * $NumNumbers * ($Numbers-1)/gmp_fact($NumbersLen); 

을, 당신은 gmp_fact에 대한 호출을 제거 할 수 있으며, 숫자 2로 바꾸십시오.