로또 확률이 어케 구해지는지 알아보다가 만들어봤습니다. 여기에서 유념할 것은 한 가지 뿐입니다. 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}
KTUG 한국 텍 사용자 그룹