Excel heeft een functie om een willekeurig getal te genereren. U kunt daarmee willekeurige getallen maken aan de hand van een aantal randvoorwaarden. Cm: legt uit hoe dat werkt.
De functie ASELECT (RAND) is voor de meeste doeleinden geschikt, want er wordt een willekeurig getal toegewezen door een toevalsgenerator op basis van enkele parameters, zoals het aantal getallen dat moet worden uitgedeeld en eventuele afronding. Deze getallen worden aangemaakt op basis van een algoritme en zijn daarom theoretisch te voorspellen. De generator gaat naar verluidt uit van de systeemtijd (het precieze proces is niet gedocumenteerd, hoewel Microsoft aangeeft een mersenne-twister te gebruiken), haalt de inputs en de startwaarde door een algoritme en maakt een reeks aan van willekeurige getallen aan.
Willekeurige getallen
In de standaardinstelling geeft ASELECT (RAND) een willekeurig getal terug dat groter is dan 0 en kleiner dan 1. Dat kan handig zijn voor het gebruik in een functie, maar in praktische voorbeelden zoeken gebruikers vaker naar een geheel getal. Sluit daarvoor ASELECT in een formule in met INTEGER (INT) en geef het gegenereerde getal maal honderd terug. De functie =INTEGER(ASELECT()*100) (=INT(RAND()*100)) geeft een willekeurig natuurlijk getal tussen 0 en 100 terug.
Willekeurige getallen in een bereik
Ook is het mogelijk om een aangepast bereik te definiëren voor het genereren van getallen, bijvoorbeeld een reeks met als laagste mogelijkheid 64 en als bovengrens 256. Daarvoor gebruikt u de functie ASELECTTUSSEN (RANDBETWEEN). Deze functie gebruik als parameters het laagste en hoogste getal uit het bereik dat u wilt, bijvoorbeeld ASELECTTUSSEN(64;256) (RANDBETWEEN(64,256)). Dit genereert een geheel getal tussen deze waarden.
Voorbij pseudo-willekeurigheid
Omdat de willekeurige toewijzing in theorie te achterhalen en te voorspellen is, is deze Excel-functie niet toereikend voor alle toepassingen die met beveiliging te maken heeft. Immers, als een willekeurige sleutel te voorspellen is, verslaat dat het nut van de ‘willekeurigheid’. De willekeurigheid van ASELECT dan ook pseudo-willekeurigheid omdat er sprake is van een deterministisch proces. Daarbij geldt dat als de beginwaarden hetzelfde zijn (bijvoorbeeld de systeemtijd en de parameters) er eenzelfde waarde uit het proces rolt. Deze voorspelbaarheid is fnuikend voor beveiligingsmiddelen.
In het geval u robuustere willekeurigheid nodig heeft binnen Excel, kunt u het beste een dienst als random.org raadplegen. Deze genereert getallen door op basis van atmosferische ruis die met radio-ontvangers wordt opgenomen. Dat zou niet te voorspellen moeten zijn en op deze pagina legt de maker dat uit aan de hand van statistische analyse. In Excel kunt u een webquery aanmaken om nummers via random.org binnen te halen. De site heeft zelf hier twee macro’s gepubliceerd om ware willekeurige waardes op te halen binnen Excel.