Quelle est la qualité de la fonction RAND() dans Excel pour la simulation de Monte Carlo?

j'implémente une simulation Monte Carlo en 3 variables dans Excel. J'ai utilisé la fonction RAND() pour échantillonner les distributions de Weibull (avec longues queues). Les fonctions appliquées aux échantillons sont non linéaires mais lisses (exp, ln, cos, etc.). Le résultat de chaque échantillon est une réussite/échec, et le résultat global est une probabilité de défaillance.

j'ai également mis en œuvre ceci par intégration numérique et Monte Carlo dans MathCad, obtenant le même résultat les deux fois. MathCad utilise (I think) un générateur de nombres aléatoires Mersenne Twister.

ma feuille de calcul excel obtient constamment des résultats différents (c.-à-d. toujours plus grand). J'ai vérifié les équations sont les mêmes.

Quel générateur de nombres aléatoires utilise Excel, et à quel point est-il bon? Est-il possible que ce soit la source de mon problème? J'ai supposé que les implémentations Excel de exp, cos etc sont correctes.

enfin, y a-t-il un moyen de mettre en oeuvre Monte Carlo pour atténuer les effets des (connus) pauvres propriétés d'un générateur de nombre aléatoire? (J'ai entendu parler des chaînes de Markov, des promenades au hasard etc, mais je ne sais pas vraiment beaucoup sur eux)

merci Beaucoup.

21
demandé sur ashleedawg 2011-05-04 19:50:07

5 réponses

il y a un article de journal sur ce sujet par McCullough (2008): Sur la précision des procédures statistiques dans Microsoft Excel 2007 (Calcul Statistique et Analyse de Données)

citant l'article original:

le générateur de nombres aléatoires a toujours été insuffisante. Avec Excel 2003, Microsoft a tenté de mettre en œuvre la Wichmann–Hill générateur et a échoué à implémentez-le correctement. fixe la version s'affiche dans Excel 2007 mais ce fix a été fait incorrectement. Microsoft a échoué à deux reprises à mettre en œuvre correctement les douzaines de lignes de code qui constituent le Wichmann-Hill générateur; c'est quelque chose que tout baccalauréat en informatique majeure devrait être en mesure de le faire. Excel aléatoire le générateur de nombres ne répond pas aux exigences de base pour un nombre aléatoire générateur à usage scientifique objectifs:

  1. il n'est pas connu pour passer la norme des tests de randomisation, par exemple L'Ecuyer et Simard (2007) ÉCRASER les tests (ces remplace Diehard de Marsaglia (1996) tests-voir Altman et al. (2004) pour un la comparaison);
  2. il n'est pas connu pour produire des nombres qui sont approximativement indépendants dans un nombre modéré de dimensions;
  3. il a une durée inconnue; et
  4. il n'est pas reproductible.

Pour plus de détails sur ces points, voir l'accompagnement l'article by McCullough (2008)

17
répondu rcs 2011-05-05 06:53:43

Puisqu'il s'agit du résultat supérieur dans Google pour "la qualité de la fonction Rand() D'Excel", il est intéressant de mettre à jour les réponses pour les versions ultérieures D'Excel

Ce document par Guy Melard "Sur la précision des procédures statistiques dans Microsoft Excel 2010" a testé la fonction RAND() dans Excel 2010 et a constaté qu'elle était considérablement améliorée par rapport à 2007 ou 2003. Microsoft est passé d'un générateur Wichmann et Hill incorrect (2007/2003) à L'algorithme de Mersenne Twister qui a une longueur de cycle beaucoup, beaucoup plus grande.

les auteurs de cet article l'ont fait passer à travers des tests de randomisation" Small Crush"," Crush "et" Big Crush " et il a passé presque tous les tests.

alors bien que ce ne soit certainement pas la même chose que les vrais nombres aléatoires, la fonction RAND() dans Excel 2010, et probablement les versions plus récentes, ne peut plus être considérée comme terrible.

il faut noter cependant que Excel 2010 utilise encore deux algorithmes complètement différents pour la VBA le générateur de nombres aléatoires, et le RNG qui est dans la boîte à outils d'analyse de données. Selon Melard, les deux sont encore terribles, et en fait la VBA utilise le même nombre de graines à chaque fois afin de produire les mêmes nombres.

Mes plus grandes plaintes avec les nombres aléatoires dans Excel sont

  • vous ne pouvez pas définir la graine, donc les nombres ne sont pas reproductibles
  • les nombres aléatoires mettent à jour chaque fois que vous appuyez sur Entrée / suppression, et même si vous définissez calcul options de manuel, ils mettent encore à jour lorsque vous enregistrez le fichier Excel
22
répondu Fairly Nerdy 2018-07-23 17:29:34

il y a des produits commerciaux pour cela. Google apparaît deux fois avant que je me lasse de chercher

http://www.mathwave.com/articles/random-numbers-excel-worksheets.html

http://www.ozgrid.com/Services/excel-random-number-generator.htm

0
répondu S.Lott 2011-05-04 15:53:14

Paul Wilmott, dans son livre de Finance Quantitative, additionne simplement les résultats de 12 appels à RAND () et soustrait 6 pour une bonne approximation d'une variable normale. Rapide n Sale

-2
répondu James 2011-05-04 15:56:43

RAND() est tout à fait aléatoire, mais pour les simulations de Monte Carlo, peut être un peu trop aléatoire (à moins que vous ne fassiez des tests de primalité). La plupart des simulations de Monte Carlo ne nécessitent que des séquences pseudo-aléatoires et déterministes. Dans le cadre de L'analyse Excel ToolPak RANDBETWEEN() peut être tout ce dont vous avez besoin pour des séquences pseudo-aléatoires.

-4
répondu Todd Main 2011-05-05 00:20:01