2009-12-27 46 views
3

Existe-t-il un algorithme à passage unique pouvant produire des nombres répartis sur partie d'une distribution normale (gaussienne)?Algorithme de distribution sur * partie * d'une distribution normale

Je souhaite spécifier une valeur de base (le centre de la distribution), un écart-type et des valeurs min et max. Par exemple, je pourrais vouloir que toutes les valeurs soient réparties entre -0,5 et +1 déviations standard dans le même rapport que l'on pourrait trouver dans une distribution normale (évidemment augmentée pour prendre en compte les queues manquantes). De toute évidence, on peut utiliser une boucle et ne sortir que si le nombre généré est compris entre le minimum et le maximum, mais cela pourrait durer longtemps si min/max sont trop proches ou trop éloignés le long d'une queue.

Je suppose un langage avec une fonction de nombre aléatoire gaussien (j'utilise Java, mais peut lire presque n'importe quoi).

Répondre

4

Vous pouvez calculer erf pour le gaussien donné aux points d'intérêt minimum et maximum, générer le nombre aléatoire (uniformément) entre ces deux valeurs et prendre l'inverse erf.

Je sais que la bibliothèque Apache a une fonction erf en Java, voir here, mais je ne suis pas sûr où vous point pour l'inverse de erf (pire des cas, bien sûr, vous pouvez calculer cette dernière avec Newton-Raphson).

(J'ai trouvé un algorithme pour l'inverse erfhere, avec l'implémentation Java, mais je ne peux pas garantir sa qualité).