Excel – willekeurige waarden

randomIn Excel is het mogelijk om automatisch willekeurige  waarden te genereren.

Het houdt in dat een waarde uit een reeks van waarden, met een begin- en eindpunt, via een toevalsgenerator geselecteerd wordt. Een toevalsgenerator (random number generator) is gebaseerd op een algoritme, oftewel een berekening die zorgdraagt voor de willekeurige selectie.

Met behulp van de ingebouwde Excel functies: ‘ASELECT’, ‘ASELECTTUSSEN’ en ‘KIEZEN’ kunnen deze berekeningen tot stand worden gebracht.

excel_willekeurige_waarden

In het bovenstaande voorbeeld zijn zes voorbeelden per gegevenstype (1e kolom) uiteengezet. In de kolom [Functie als tekst] zijn de functies als tekst ingesteld voor de beeldvorming.

Het gebruik van willekeurige waarden in Excel kan handig zijn wanneer het bijvoorbeeld gewenst is om te werken met fictieve gegevens in de plaats van bedrijfsgevoelige gegevens. Ook kan het werken met willekeurige waarden een uitkomst bieden bij presentaties en/of trainingen.

De functie ‘ASELECTBEREIK’ is een zelf gedefinieerde functie die met behulp van de onderstaande VBA-code is ontwikkeld. Via deze functie kan een bereik worden geselecteerd – zoals in het bovenstaande voorbeeld F2:F11 – die als bron fungeert voor de willekeurige selectie.

'-----------------------------------------------------------------------------------------------------------------------
' Auteur        : pascalterheege.nl
' Datum         : 5-6-2016
' Object        : modFunctie
' Doel          : willekeurige selectie berekenen a.d.h.v. een ingegeven bereik
' Bron          :
'-----------------------------------------------------------------------------------------------------------------------

Option Explicit

'-----------------------------------------------------------------------------------------------------------------------
' Datum         : 12-6-2016
' Type          : Subroutine
'
' Int(Bereik.Count * Rnd + 1)
'   Omschrijving        Toelichting                                 Voorbeeld
'   1. Bereik.count     aantal waarden bereik                       10
'   2. Rnd              genereert willekeurig getal tussen 0 en 1   0,7795186
'   3. Formule          10 * 0,7795186 + 1                          8,795186
'   4. Int              rond altijd naar beneden af                 8
'-----------------------------------------------------------------------------------------------------------------------

Function ASELECTBEREIK(Bereik As Range)
    Dim i As Integer
    i = Int(Bereik.Count * Rnd + 1)
    ASELECTBEREIK = Bereik.Cells(i).Value
End Function

De ingebouwde Excel functies zijn volgens dit artikel gebaseerd op de Mersenne Twister algoritme. De VBA functie Rnd is volgens hetzelfde artikel gebaseerd op de Linear Congruential Generator.

Download hier het oefenbestand.