C C++ code source compilation configuration email framework gestionnaire de fenêtres latex librairie libre linux php programmation python réseau shell ssh statistique SVG xml audio humour image jeu philosophie point de vue web bibliographie colonies de fourmis conférence estimation de distribution livre métaheuristique rapport
Comment effectuer un tirage aléatoire suivant une loi gaussienne multi-variante (également appelée loi multinormale) ? La réponse et un code C++ en prime.
Une possibilité est de considérer que chaque variable est indépendante des autres. On tire alors chaque variable dans une loi normale, en utilisant la méthode de Box-Muller :
En C++, tirer un chiffre y dans une loi normale de moyenne mean et d’écart-type std, ça donne quelque chose comme : double x1, x2, w, y ;
do x1 = 2.0 * (...)
[Lire la suite]
Quel est l’algorithme correct pour effectuer un tirage aléatoire suivant une distribution aléatoire uniforme hypersphèrique ? Pas si évident...
La première solution venant à l’esprit consiste a se placer dans un espace en coordonnées polaires et à tirer dans une loi uniforme chaque coordonnées. Dans un espace à N dimensions, on tire ainsi le rayon r et les angles a1...a2...ai...aN. Puis on passe en coordonnées rectangulaires pour avoir les les angles x1...x2...xi...xN.
Or, comme on peut le (...)
[Lire la suite]