Esto no es práctico, pero sí bonito; bonito, además, de esa forma inasequible a la chusma

Va de muestrear los números 1, \dots, n que tienen asignadas probabilidades p_1, \dots, p_n. Una manera muy impráctica (en R, basta usar sample) y nada intuitiva de hacerlo es recurriendo a la distribución de Gumbel:

library(evd)

pes <- runif(5)
pes <- pes / sum(pes)
gammas <- log(pes) + 2
x <- rgumbel(length(pes))
muestra <- which.max(gammas + x)

O, en masa, aplicando

get_samples <- function(n){
    replicate(n, {
        x <- rgumbel(length(pes))
        which.max(gammas + x)
    })
}

El seudocódigo está extraído de la Wikipedia y el motivo por el que la cosa funciona en lugar de no funcionar, que es la parte bonita del asunto, está explicado aquí.

Comenta

Your email address will not be published.

Puedes usar estas etiquetas y atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.