Alea Rnd strictement positif

Bonsoir,

Je cherche à modéliser une loi normale en VBA et j'utilise pour cela la fonction suivante :

variable_alea=Application.WorksheetFunction.NormSInv(Rnd)

Cette solution est proposée sur de nombreux forum et fonctionne relativement bien.

Je note cependant que Rnd (tout comme alea() sur Excel), renvoie une valeur strictement inférieure à 1, mais supérieure ou égale à 0.

Lorsque le nombre aléatoire généré est égal à 0, cela pose un problème car la loi normale inversée ne peut pas prendre 0 en argument.

Est-ce plus pertinent d'utiliser la solution suivante que je ne trouve pourtant pas en ligne :

variable_alea=Application.WorksheetFunction.NormSInv(max(Rnd,0.000000000001))

merci pour votre aide.

Gonzague

Bonjour,

Bien sûr que tu peux.

Ca biaise un peu l'aléatoire mais c'est d'un pouième tellement petit.

Et puis tu n'as pas trop le choix et tu peux mettre jusqu'à 1E-300...

Apparement il y a une erreur dans l'aide excel :

Si l'argument probabilité < 0 ou si probabilité > 1, la fonction LOI.NORMALE.STANDARD.INVERSE renvoie la valeur d'erreur #NOMBRE!

eric

Merci c'est exactement ce que j'ai fait, mais c'est consommateur.

Cette fonction est dans une boucle exécutée plusieurs fois et je passe de 25secondes à 37 secondes pour un simple max !

Rechercher des sujets similaires à "alea rnd strictement positif"