|
Ik was op zoek naar een manier om een nummerlijst door elkaar te krijgen, zeg maar shuffelen of in random volgorde te zetten. De uitdaging was om uit een documenten collectie van bijvoorbeeld 200 documenten (vragen) elke keer 20 willekeurige maar unieke documenten te selecteren.
Als oplossing heb ik de volgende code bedacht:
.......... Set Col = View.getAllDocumentsByKey(cat$,True) Count = Col.Count For x = 0 To 20 'Max aantal nummers terug inr = RandomInteger(Count, 1) Set questionDoc = col.GetNthDocument(inr) UNID$ = Cstr(questionDoc.UniversalID) Do While Not Isnull(Arraygetindex(nr, UNID$)) inr = RandomInteger(Count, 1) Set questionDoc = col.GetNthDocument(inr) UNID$ = Cstr(questionDoc.UniversalID) Loop nr(x) = UNID$ Next .......... Private Function RandomInteger(HighValue As Long, LowValue As Long) As Long Randomize RandomInteger = Int((HighValue - Lowvalue + 1) * Rnd + Lowvalue) End Function ..........
Met deze unieke array van document unid kon ik verdere bewerkingen uitvoeren. (En voor wie zich afvraagd waarom niet gewoon de nummers in een array: de functie wordt een aantal keren gebruikt waarbij documenten meerdere keren in de collectie kunnen voorkomen, maar slechts een keer gebruikt mogen worden, vandaar.)
|