Description de la fonction RAND dans Excel 2007 et Excel 2003

Traductions disponibles Traductions disponibles
Numéro d'article: 828795 - Voir les produits auxquels s'applique cet article
Cet article peut contenir des liens vers des informations en langue anglaise (pas encore traduites).
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article décrit l'algorithme modifié qui est utilisé dans la fonction Génération de nombres aléatoires, RAND, dans Microsoft Office Excel 2007 et dans Microsoft Office Excel 2003.

Plus d'informations

La fonction RAND dans les versions antérieures d'Excel utilisait un pseudo-algorithme de génération de nombres aléatoires dont les performances dans les tests standard à caractère aléatoire étaient insuffisantes. Bien qu'il soit probable que cela n'affecte que les utilisateurs qui effectuent un grand nombre d'appels vers RAND, par exemple plus d'un million d'appels, sans aucune incidence pour la plupart des autres utilisateurs, le pseudo algorithme de génération de nombres aléatoires qui est décrit ici a tout d'abord été mis en ?uvre pour Excel 2003. Il réussit la même batterie de tests standard.

Cette batterie de tests est appelée Diehard (voir la remarque 1). L'algorithme qui est mis en ?uvre dans Excel 2003 a été développé par B.A. Wichman and I.D. Hill (voir les remarques 2 et 3). La génération de nombres aléatoires est également utilisée dans le package logiciel RAT-STATS qui est fourni par l'Office of the Inspector General, U.S. Department of Health and Human Services. Il a été démontré par Rotz et al (voir la remarque 4) qu'il réussit les tests DIEHARD et les tests supplémentaires développés par le National Institute of Standards and Technology (NIST, auparavant National Bureau of Standards).

Remarques

  • Les tests ont été développés par le Professeur George Marsaglia, Department of Statistics, Florida State University et sont disponibles sur le site Web à l'adresse suivante (en anglais):
    http://i.cs.hku.hk/~diehard/
  • Wichman, B.A. and I.D. Hill, Algorithm AS 183: An Efficient and Portable Pseudo-Random Number Generator, Applied Statistics, 31, 188-190, 1982.
  • Wichman, B.A. and I.D. Hill, Building a Random-Number Generator, BYTE, pp. 127-128, March 1987.
  • Rotz, W. and E. Falk, D. Wood, and J. Mulrow, A Comparison of Random Number Generators Used in Business, presented at Joint Statistical Meetings, Atlanta, GA, 2001.
L'idée de départ est que si vous prenez trois nombres aléatoires [0,1] et les additionnez, la partie fractionnelle de la somme est elle-même un nombre aléatoire [0,1]. Les principales instructions dans le code Fortran de l'article Wichman et Hill d'origine sont les suivantes :
C	IX, IY, IZ SHOULD BE SET TO INTEGER VALUES BETWEEN 1 AND 30000 BEFORE FIRST ENTRY

IX = MOD(171 * IX, 30269)

IY = MOD(172 * IY, 30307)

IZ = MOD(170 * IZ, 30323)

RANDOM = AMOD(FLOAT(IX) / 30269.0 + FLOAT(IY) / 30307.0 + FLOAT(IZ) / 30323.0, 1.0)
Par conséquent, IX, IY, IZ génèrent des entiers compris respectivement entre 0 et 30268, 0 et 30306 et 0 et 30322. Ceux?ci sont combinés dans la dernière instruction pour la mise en ?uvre du principe simple décrit plus haut : si vous prenez trois nombres aléatoires [0,1] et les additionnez, la partie fractionnelle de la somme est elle-même un nombre aléatoire [0,1].

Étant donné que RAND produit des nombres pseudo-aléatoires, si une longue séquence de ceux-ci est produite, il est possible qu'elle se répète elle-même. La combinaison de nombres telle qu'elle est effectuée dans la procédure Wichman-Hill garantit que plus 10^13 nombres vont être générés avant le début de la répétition. Plusieurs des tests Diehard ont produit des résultats non satisfaisants avec d'anciennes versions de RAND car le cycle précédant le début de la répétition des nombres était trop court.

Résultats dans les versions antérieures d'Excel

La fonction RAND dans les versions antérieures d'Excel donnait dans la pratique des résultats satisfaisants pour les utilisateurs qui n'avaient pas besoin d'une longue séquence de nombre aléatoires (un million, par exemple). Elle échouait à plusieurs tests standard de caractères aléatoires, ce qui posait un problème pour ses performances lorsqu'une longue séquence de nombre aléatoires était nécessaire.

Résultats dans Excel 2003

Un algorithme simple et efficace a été mis en ?uvre. Le nouveau générateur réussit tous les tests standard à caractère aléatoire.

Conclusions

Les utilisateurs avec pouvoir de RAND qui ont besoin de longues séquences de nombres aléatoires ont tout intérêt à utiliser le nouveau générateur d'Excel 2003. Les autres ne devraient pas être dissuadés d'utiliser RAND dans les versions antérieures d'Excel.

Références

Pour plus d'informations sur un problème susceptible de se produire dans RAND, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
834520 La fonction RAND renvoie des nombres négatifs dans Excel 2003

Propriétés

Numéro d'article: 828795 - Dernière mise à jour: vendredi 4 janvier 2008 - Version: 5.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
Mots-clés : 
kbinfo kbfunctions kbfuncstat KB828795
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com