잡식[雜食]

로또 번호로 몇번째 조합인지 찾는 방법(feat. PHP 버전)

쏘리다이 2019. 12. 10. 08:32

빌려쓰는 호스팅의 트래픽에 제한이 있어 전체 로또 번호를 넣을수는 없었다.

일단 당첨번호까지는 크게 무리가 없겠지만 필요에 따라 로또 번호만으로 몇번째 조합인지 필요할 수도 있을거 같아

코딩된 소스를 찾아보니 다른 언어로 된게 있더라...

그래서 얼른 가져와 PHP 버전으로 변경해 보았다.

// 로또 순서 찾기
function find_num($r = array()){

$sum  = 0;

for($a = 1; $a < $r[0]; $a++) {
  $sum += ( (45 - $a) * (45 - $a - 1) * (45 - $a - 2) * (45 - $a - 3) * (45 - $a - 4) ) / (5 * 4 * 3 * 2 * 1);
}
for($b = $a + 1; $b < $r[1]; $b++) {
  $sum += ( (45 - $b) * (45 - $b - 1) * (45 - $b - 2) * (45 - $b - 3) ) / (4 * 3 * 2 * 1);
}
for($c = $b + 1; $c < $r[2]; $c++) {
$sum += ( (45 - $c) * (45 - $c - 1) * (45 - $c - 2) ) / (3 * 2 * 1);
}
for($d = $c + 1; $d < $r[3]; $d++) {
  $sum += ( (45 - $d) * (45 - $d -1) ) / (2 * 1);
}
for($e = $d + 1; $e < $r[4]; $e++) {
  $sum += ( (45 - $e) ) / (1);
}
for($f = $e + 1; $f < $r[5]; $f++) {
  $sum += 1;
}

return ++$sum;

}

$r1 = array(1,2,3,4,5,6);
$r2 = array(40,41,42,43,44,45);

printf("1,2,3,4,5,6 : %d\n", find_num($r1)); // 결과: 1
printf("40,41,42,43,44,45 : %d\n", find_num($r2)); // 결과: 8145060

이게 어떤식으로 쓰이게 될지는 아직 모르겠다.

일단은 로또와 관련된건 모두 찾아보고 코딩 될만한건 해 보고 있다.

자금의 압박...

무료로 쓰는 호스팅이니 당장은 이런식으로 밖에 할 수가 없다.

답답하다.