KTUG 한국 텍 사용자 그룹

Menu

KTUG :: 마당자유글 › [exp3] 조합(combination) <연분수보다 말도 못하게 쉬운>

yihoze | 2018.10.26 15:19:10 | 메뉴 건너뛰기 쓰기

combination..png

로또 확률이 어케 구해지는지 알아보다가 만들어봤습니다.​​ 여기에서 유념할 것은 한 가지 뿐입니다. 10! 이상 되면 값이 너무 커지므로, 정수(int)가 아닌 실수(fp)를 사용해야 합니다.

\documentclass{article}
\usepackage{xparse, expl3}
\newcommand\NchooseR[2]{$_{#1}C_{#2}$~=~}
\ExplSyntaxOn
\NewDocumentCommand \combination { s m m }
{    
    \int_set:Nn \l_tmpa_int { #2 - #3 + 1}
    \combination_factorial:Nnn \l_tmpa_fp { #2 }{ \l_tmpa_int }
    \combination_factorial:Nnn \l_tmpb_fp { #3 }{ 1 }
    \IfBooleanT { #1 }{ \NchooseR{ #2 }{ #3 } }
    \fp_eval:n { \l_tmpa_fp / \l_tmpb_fp }    
}    
\cs_new:Npn \combination_factorial:Nnn #1 #2 #3
{
    \fp_set:Nn #1 { 1 }
    \int_step_inline:nnnn { #2 }{ -1 }{ #3 }
    {
        \fp_set:Nn #1 { #1 * ##1 }
    }
}
\NewDocumentCommand \factorial { s m }
{
    \combination_factorial:Nnn \l_tmpa_fp { #2 }{ 1 }
    \IfBooleanT { #1 }{ #2!~=~ }
    \fp_use:N \l_tmpa_fp
}
\ExplSyntaxOff
\begin{document}
\factorial{5} \factorial*{5} \\
\combination{45}{6} \combination*{45}{6}
\end{document}

첨부 [1]

댓글 [7]

댓글 쓰기

목록

KTUG 한국 텍 사용자 그룹