Desde el principio el comentario de Glen_b fue una preocupación, y sospecho que hay un malentendido por mi parte, o algo que posiblemente falta en el OP. Aquí está la cosa, si tenemos que tomar su pregunta literalmente, entonces es muy sencillo. Usted está diciendo que el orden no importa, y que desea que el número de combinaciones (no la probabilidad), de tal manera que, la elección de $18$ veces con sustitución de $\small\{0,1,\cdots,9\}$ hay $4$ dígitos que se repiten $3$ veces cada uno, y los otros son diferentes.
Sólo tienes que elegir $4$ entre los $10$ opciones en $\small\{0,1,\cdots,9\}$ que son los números que se repetirán $3$ veces cada uno, para un total de $12$ dígitos. Ya que se quedará con $6$ dígitos para elegir, pero está indicando que los otros dígitos aparecen sólo una vez, y sabemos que los cuatro elegidos aparecen sólo $3$ veces cada uno, todos estos restantes $6$ se agotará. Por lo tanto, no ofrecen ninguna opción adicional, y su número de combinaciones posibles es ${10\choose 4}=210$ .
O muy aproximada con una simulación:
set.seed(0)
library(data.table)
picks = 0:9 # Digits to choose from.
combinations = function(n){
matrix = matrix(rep(0, 18 * n), nrow = n) # Starting an empty matrix.
# we run a loop sampling 18 digits in every iteration:
for(i in 1:n){ # n is the number of experiments we will carry out.
lotto = sample(picks, 18, replace = T) # We pick 18 with replacement...
matrix[i,] = lotto # and fill the matrix one row at a time.
}
# Now we want to just keep the rows that have 8 duplicates:
# 4 digits have 2 duplicates each; hence, 4 x 2 = 8:
duplicates=apply(apply(matrix, 1, function(x) duplicated(x)), 2, function(x) sum(x))
matrix = matrix[duplicates==8,]
# We place the rows of the matrix in increasing order:
matrix = unique(t(apply(matrix, 1, function(x) sort(x))))
# And we keep those unique rows that contain 4 groupings of 3 repeat digits:
matrix = unique(matrix[apply(matrix, 1, function(x) sum(tabulate(rleid(x))==3))==4,])
# In a sufficiently large simulation the number of rows
# of the resulting matrix will be the answer to the question:
nrow(matrix)
}
combinations(1e6)
que da como resultado $207$ .
Y para mayor claridad, así es como se ven dos filas de la matriz en la función:
Aunque parezca que el orden entra en juego, es sólo un "truco" de codificación para obtener las combinaciones que se piden en el OP, que yo interpreté como "el orden no importa". En otras palabras, ahora podríamos barajar el orden de los elementos en cada fila.