4 votos

Algoritmo para generar una distribución uniforme de puntos en el volumen de una hiperesfera / en la superficie de una hiperesfera.

Estoy buscando dos algoritmos simples / eficientes / genéricos para generar una distribución uniforme de puntos aleatorios:

  • en el volumen de una hiperesfera n-dimensional
  • en la superficie de una hiperesfera n-dimensional

conociendo la dimensión$n$, el centro de la hiperesfera$\vec{x}$ y su radio$r$.

Como hacer eso ?

0voto

AADTechnical Puntos 344

Para el volumen yo diría que el simlest algoritmo sería un estándar de aceptar-rechazar algoritmo.

(1) draw a uniform random point within an n-dimensional hypercube
(2) repeat (1) if the distance exceeds $r$, otherwise done

si no estoy equivocado, aunque, aceptar tasas de descenso del $n$ aumenta, tal vez hay algo más eficiente

editar usted también puede encontrar algunas ideas aquí: Recoger puntos al azar en el volumen de la esfera con el uniforme de probabilidad

edit2 gracias a @torpe para señalar que mi sugerencia para dibujar distribuidos de manera uniforme los ángulos no es un método válido para obtener puntos en la superficie

0voto

jlupolt Puntos 369

De manera abrupta , para seleccionar puntos en la superficie de una hiperesfera es generar$n$ variables aleatorias gaussianas$x_1, x_2, ...x_n$, y luego usar los vectores:

$$ \ frac {1} {\ sqrt {x_1 ^ 2 + x_2 ^ 2 + ... + x_n ^ 2}} \ left (\begin{array}{c} x_1\\ x_2\\ ..\\ x_n\\ \end {array} \ right) $$ que se distribuirá uniformemente en La superficie de la hiperesfera.

i-Ciencias.com

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.

Powered by: