3 votos

Combinación de secuencias alternas de números aleatorios

Tengo un problema que me cuesta resolver. Tenemos una secuencia de 10 números, del 0 al 9. Queremos encontrar todas las combinaciones en las que, al elegir de la secuencia 18 veces con reemplazamiento, tendremos 4 de ellos repetidos 3 veces cada uno, y el resto aparecen una sola vez.

Esto es lo que pienso:

  • Elegir 4 números de 10: $10\choose4$
  • Cada uno repitiendo 3 veces: $(\frac{1}{10})^3$
  • Secuencias únicas de los 6 números restantes: $\frac{6!}{10^6}$
  • Combinación de todas las secuencias únicas: ${10\choose 6}$

Así combinándolos tendré: $10\choose4$$ (\frac{1}{10})^3 $$\frac{6!}{10^6}$$ {10\ elegir 6}$

¿Podría alguien decirme si esto es correcto? y si no, ¿dónde me he equivocado?

1voto

Antoni Parellada Puntos 2762

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:

enter image description here

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.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X