Considere la posibilidad de un conjunto múltiple de números naturales. Como un ejemplo
$$ M = \{1, 2, 2, 3, 3, 3\} $$
Si tratamos de copias de la misma cantidad que indistinguibles, hay 8 diferentes 2-tuplas podemos formar a partir de este, al no utilizar ningún número más a menudo de lo que parece en $M$:
$$ \{ (1,2), (2,1), (1,3), (3,1), (2,3), (3,2), (2,2), (3,3) \} $$
Hay un algoritmo que genera una de estas tuplas con el uniforme de probabilidad, sin tener que generar todas las tuplas de frente y seleccionar uno al azar? Tenga en cuenta que la uniformidad es en referencia a la lista de tuplas, por lo $(3,3)$ debe aparecer con la misma probabilidad en $(2,2)$ o $(1,2)$, respectivamente.
El algoritmo debe trabajar para arbitrario no vacía $M$$n \leq |M|$, donde el objetivo es generar $n$-tuplas.
Idealmente, estoy en busca de un algoritmo que no se basa en el rechazo, pero si eso no es posible, también me gustaría estar interesado en cómo puedo minimizar el número de rechazos para generar las tuplas de manera eficiente.
Si en casos especiales (es decir, pequeños, fijos $n$) rendimiento de los buenos algoritmos, yo todavía estaría interesado en eso, incluso si no generalizar a mayor $n$.