Function AleaStable(Optional ByVal Alpha As Variant = 2, Optional ByVal Gamma As Variant = 1 / 2 ^ 0.5, Optional ByVal Mu As Variant = 0, Optional ByVal Beta As Variant = 0) 'Calcul d'un nombre aléatoire suivant une loi alpha stable 'Formules de Chambers, Mallows, Stuck 'Traitement des paramètres Alpha = CDbl(Alpha) Gamma = CDbl(Gamma) Mu = CDbl(Mu) If Beta < -1 Or Beta > 1 Then AleaStable = "#BETA!": Exit Function Beta = CDbl(Beta) 'Définition des variables Dim V As Double, W As Double, A1 As Double, X As Double Dim A As Double, B As Double, C As Double 'génére une variable uniforme V entre -pi et +pi V = (4 * Atn(1)) * Rnd - 2 * Atn(1) 'W=-ln(1-U ) W = -Log(1 - Rnd) 'Cacul S(alpha,1,beta,0) A1 = 1 / Alpha C = Beta * Tan(2 * Atn(1) * Alpha) A = (C ^ 2 + 1) ^ (A1 / 2) B = Atn(C) * A1 X = A * (Sin(Alpha * (V + B)) / (Cos(V) ^ A1)) * (Cos(V - Alpha * (V + B)) / W) ^ (A1 - 1) 'Calcul S(alpha,gamma,beta,mu) AleaStable = Gamma * X + Mu End Function