Sous Excel, la formule générera un nombre aléatoire à partir d'une distribution normale avec une moyenne de 10 et une variance 1. Existe-t-il un moyen de définir une valeur de référence pour obtenir un nombre fixe de nombres aléatoires tout le temps? J'utilise Excel 2010
=NORMINV(Rand(),10,1)
Vous pouvez implémenter votre propre générateur de nombres aléatoires à l'aide de fonctions de tableur. Par exemple, C++ 11 a un générateur de nombres aléatoires Lehmer appelé minstd_Rand
qui est obtenu par la récurrence
X = X*g (mod m)
où g = 48271
et m = 2^31-1
Dans A1
, vous pouvez placer votre valeur de départ. Dans A2
, entrez la formule:
=MOD(48271*A1,2^31-1)
et copiez-le aussi loin que vous le souhaitez.
Dans B2
, entrez =A2/(2^31-1)
et dans C2
, entrez =NORM.INV(B2,10,1)
, en effectuant les copies nécessaires. Notez que vous pouvez toujours remplacer la valeur de départ dans A1
par
=RANDBETWEEN(0,2^31-2)
si vous voulez réactiver le caractère aléatoire.
La capture d'écran suivante montre 25 variables normales aléatoires générées de cette manière:
Comme vous pouvez le constater d'après l'histogramme, la distribution semble à peu près normale.
Vous pouvez utiliser un VBA _ {UDF ()} _ basé sur la fonction Rnd (). Voir:
Je ne prétends pas que c'est une solution parfaite, mais cela fonctionne pour moi ... La beauté de cette solution est que je peux attribuer un numéro aléatoire à une cellule particulière:
Public Function GetRandom(seed As Double, min As Double, max As Double) As Double
Dim colrow As Double
Dim range As Double
range = max - min
If (Application.Caller.Column() = Application.Caller.Row()) Then
colrow = (Log(Application.Caller.Column() + 1) * Log(Application.Caller.Row() + 1)) * seed
Else
colrow = (Log(Application.Caller.Column() + 1) / Log(Application.Caller.Row() + 1)) * seed
End If
Rnd (-1)
Randomize colrow
test = Rnd * range - range / 2
GetRandom = colrow
End Function
Usage:
=GetRandom($Z$1,1,-1)
Dans mon exemple, la valeur de départ est dans la cellule Z1, mais bien sûr, elle peut figurer dans n’importe quelle autre cellule. Cela me permet également de définir des valeurs minimales et maximales.