Je bent nu offline; er wordt gewacht tot er weer een internetverbinding is

Beschrijving van de functie ASELECT in Excel 2007 en Excel 2003

De ondersteuning voor Office 2003 is beëindigd

De ondersteuning voor Office 2003 is door Microsoft beëindigd op 8 april. Deze wijziging heeft gevolgen voor software-updates en beveiligingsopties. Meer informatie over wat voor gevolgen dit voor u heeft en hoe u beveiligd blijft.

Samenvatting
In dit artikel wordt het gewijzigde algoritme besproken dat wordt gebruikt in de functie voor het genereren van willekeurige getallen (ASELECT) in Microsoft Office Excel 2007 en in Microsoft Office Excel 2003.
Meer informatie
De functie ASELECT in eerdere versies van Excel maakte gebruik van een algoritme waarmee pseudo-willekeurige getallen werden gegenereerd. Het is echter vastgesteld dat dit algoritme onvoldoende presteert in standaardtests van willekeurigheid. Hoewel dit waarschijnlijk alleen gevolgen heeft voor gebruikers die ASELECT bijzonder vaak moeten aanroepen, bijvoorbeeld meer dan een miljoen keer, en dus niet voor de gemiddelde gebruiker, is het hier beschreven algoritme voor het genereren van pseudo-willekeurige getallen voor het eerst geïmplementeerd in Excel 2003. Het algoritme voldoet aan dezelfde set standaardtests.

Deze set tests wordt Diehard genoemd (zie noot 1). Het algoritme dat is geïmplementeerd in Excel 2003 is ontwikkeld door B.A. Wichman en I.D. Hill (zie opmerking 2 en 3). Dit programma voor het genereren van willekeurige getallen wordt ook gebruikt in het softwarepakket RAT-STATS, dat wordt beschikbaar gesteld door de Office of the Inspector General, U.S. Department of Health and Human Services. Rotz et al (zie opmerking 4) hebben aangetoond dat het programma voldoet aan de Diehard-tests en aanvullende tests die zijn ontwikkeld door het National Institute of Standards and Technology (NIST, eerder bekend onder de naam National Bureau of Standards).

Opmerkingen

  • De tests zijn ontwikkeld door professor George Marsaglia, Department of Statistics, Florida State University en zijn beschikbaar op de volgende website:
  • Wichman, B.A. en I.D. Hill, Algorithm AS 183: An Efficient and Portable Pseudo-Random Number Generator, Applied Statistics, 31, 188-190, 1982.
  • Wichman, B.A. en I.D. Hill, Building a Random-Number Generator, BYTE, pp. 127-128, March 1987.
  • Rotz, W. en E. Falk, D. Wood, en J. Mulrow, A Comparison of Random Number Generators Used in Business, presentatie tijdens de Joint Statistical Meetings, Atlanta, GA, 2001.
Het uitgangspunt is dat als men drie willekeurige getallen neemt uit [0,1] en deze optelt, het fractionele deel van de som zelf een willekeurig getal is uit [0,1]. Dit zijn de belangrijkste instructies uit de Fortran-code die is gebruikt in het oorspronkelijke artikel van Wichman en Hill:
C	IX, IY, IZ SHOULD BE SET TO INTEGER VALUES BETWEEN 1 AND 30000 BEFORE FIRST ENTRYIX = 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)
IX, IY, IZ genereren daarom respectievelijk gehele getallen tussen 0 en 30268, 0 en 30306, en 0 en 30322. Deze getallen worden gecombineerd in de laatste instructie om het eenvoudige principe te implementeren dat hierboven is beschreven: als men drie willekeurige getallen neemt uit [0,1] en deze optelt, is het fractionele deel van de som zelf een willekeurig getal uit [0,1].

Het feit dat ASELECT pseudo-willekeurige getallen produceert, betekent dat er bij een zeer lange reeks ASELECT-aanroepen de reeks zichzelf gaat herhalen. Het combineren van willekeurige getallen zoals in de procedure van Wichman-Hill biedt de garantie dat er meer dan 10^13 getallen worden gegenereerd voordat er herhaling optreedt. Verschillende van de Diehard-tests leverden tegenvallende resultaten op voor eerdere versies van ASELECT omdat de herhalingscyclus voor getallen veel te kort was.

Resultaten in oudere versies van Excel

De functie ASELECT in eerdere versies van Excel leverde in de praktijk alleen problemen op voor gebruikers die behoefte hadden aan een zeer lange reeks willekeurige getallen (zoals een miljoen). De functie presteerde echter beneden verwachting in diverse standaardtests van willekeurigheid, met als gevolg dat de prestaties bij gebruik van een lange reeks willekeurige getallen onvoldoende waren.

Resultaten in Excel 2003

Er is een eenvoudig en efficiënt algoritme geïmplementeerd. Het nieuwe programma voldoet aan alle standaardtests van willekeurigheid.

Conclusies

Gebruikers van ASELECT die behoefte hebben aan lange reeksen willekeurige getallen doen er verstandig aan het nieuwe programma voor het genereren van willekeurige getallen van Excel 2003 te gebruiken. Andere gebruikers kunnen zonder problemen ASELECT uit eerdere versies van Excel gebruiken.
Referenties
Voor meer informatie over een bekend probleem met ASELECT klikt u op het volgende artikelnummer in de Microsoft Knowledge Base:
834520 De functie ASELECT levert negatieve getallen op in Excel 2003
Eigenschappen

Artikel-id: 828795 - Laatst bijgewerkt: 02/22/2008 14:53:00 - Revisie: 5.0

Microsoft Office Excel 2007, Microsoft Office Excel 2003

  • kbinfo kbfunctions kbfuncstat KB828795
Feedback