Supongamos primero que desea probar dentro de
x + y + z = 1
0 ≤ x ≤ 1
0 ≤ y ≤ 1
0 ≤ z ≤ 1
Esto no hace una gran diferencia, ya que el punto de muestra seguirá estando en su área solicitada con alta probabilidad.
Ahora te queda muestrear un punto de un simplex . En el ejemplo 3d obtienes un 2d simplex (triángulo) realizado en 3d.
En esta publicación de blog se discutió cómo elegir un punto de manera uniforme al azar (ver los comentarios).
Para su problema, significaría que toma números aleatorios del intervalo ( 0 , 1 ) , luego agrega un 0 y 1 para obtener una lista de n + 1 números. Ordena la lista y luego registra las diferencias entre dos elementos consecutivos. Esto le da una lista de n números que sumarán 1 . Además, este muestreo es uniforme. Esta idea se puede encontrar en Donald B. Rubin, The bootstrap Bayesian Ann. Estadístico. 9, 1981, 130-134.n - 1( 0 , 1 )0 01n + 1norte1
Por ejemplo ( ) tiene los tres números aleatorios, luego obtiene la secuencia ordenada y esto da las diferencias , y por construcción estos cuatro números suman 1.n = 40.4 0.2 0.1
0 0.1 0.2 0.4 1
0.1 0.1 0.2 0.6
Otro enfoque es el siguiente: primera muestra del hipercubo (es decir, se olvida x+y+z=1
) y luego normaliza el punto de muestra. La normalización es una proyección del hipercubo al d - 1- simple. Debe quedar intuitivamente claro que los puntos en el centro del símplex tienen más "puntos de preimagen" que en el exteriorrere- 1. Por lo tanto, si muestras de manera uniforme desde el hipercubo, esto no te dará un muestreo uniforme en el símplex. Sin embargo, si toma muestras del hipercubo con una distribución exponencial adecuada, este efecto se cancela. La Figura le da una idea de cómo ambos métodos tomarán muestras. Sin embargo, prefiero el método de "clasificación" debido a su forma simple. También es más fácil de implementar.