Escolha uniformemente (por meio de n - 1 reais uniformes no intervalo [ 0 , 1 ] ). Classifique os coeficientes de forma que 0 ≤ x 1 ≤ ⋯ ≤ x n - 1 . Conjuntox∈[0,1]n−1n−1[ 0 , 1 ]0 ≤ x1≤ ⋯ ≤ xn - 1
w =( x1, x2- x1, x3- x2, … , Xn - 1- xn - 2, 1 - xn - 1) .
Porque nós podemos recuperar o ordenado por meio das somas parciais do w i , o mapeamento x → w é ( n - 1 ) ! para 1; em particular, sua imagem é o n - 1 simplex em R n . Como (a) cada troca de um tipo é uma transformação linear, (b) a fórmula anterior é linear e (c) as transformações lineares preservam a uniformidade das distribuições, a uniformidade de x implica a uniformidade de w no n - 1 simplex.xEuWEux → w( n - 1 ) !n - 1RnxW n - 1 Em particular, observe que os marginais de não são necessariamente independentes.W
Este gráfico de pontos 3D mostra os resultados de 2000 iterações desse algoritmo para . Os pontos são confinados ao simplex e são distribuídos aproximadamente uniformemente sobre ele.n = 3
Como o tempo de execução desse algoritmo é , é ineficiente para n grande . Mas isso responde à pergunta! Uma maneira melhor (em geral) de gerar valores uniformemente distribuídos no n - 1- simplex é desenhar n reais reais ( x 1 , … , x n ) no intervalo [ 0 , 1 ] , calcularO ( n log( n ) ) ≫ O ( n )nn - 1n( x1, … , Xn)[ 0 , 1 ]
yEu= - log( xEu)
(o que faz com que cada positivo com probabilidade 1 , de onde a sua soma é quase certamente diferente de zero) e conjuntoyEu1
w =( y1, y2, … , Yn)/(y1+y2+⋯+yn).
Isto funciona porque cada tem um Γ ( 1 ) de distribuição, o que implica w tem um Dirichlet ( 1 , 1 , 1 ) de distribuição - e que é uniforme.yiΓ(1)w(1,1,1)