¿Puede alguien proporcionarme la expresión matemática para este código / función como una manera rápida de generar ordenado números aleatorios?
rsunif <- function(n) { n1 <- n+1
cE <- cumsum(rexp(n1)); cE[seq_len(n)]/cE[n1] }
¿Puede alguien proporcionarme la expresión matemática para este código / función como una manera rápida de generar ordenado números aleatorios?
rsunif <- function(n) { n1 <- n+1
cE <- cumsum(rexp(n1)); cE[seq_len(n)]/cE[n1] }
El código R, significa volver and the result follows from checking that the differences between the cumulated sums of exponentials renormalised by the overall sum has the same distribution as the differences between order statistics for a uniform sample, . Esto está descrito y establecido en la biblia de la simulación, Devroye del No-Aleatorio Uniforme de la Variable aleatoria Generación (1986, pp 207-219):
y también en Biau Y Devroye Conferencias sobre el Método del Vecino más Cercano (págs. 5-7)
Ejecución de una prueba para comparar este espaciamiento con una orden directa de uniforme variables muestra una clara ventaja de este enfoque (para n=100 y 10⁷ repeticiones, usando R benchmark
herramienta).
test replications elapsed relative user.self sys.self user.child
2 direct 1e7 355.213 4.722 355.112 0.024 0
1 spacings 1e7 75.221 1.000 75.208 0.000 0
aunque el aumento de reduce la ganancia:
test replications elapsed relative user.self sys.self user.child
2 direct 1e6 96.225 1.886 96.20 0 0
1 spacings 1e6 51.029 1.000 51.02 0 0
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.