08. september 2006 - 05:29Der er
5 kommentarer og 1 løsning
Hvordan shufles indholdet af et array
Jeg har et array, som indeholder en liste over filnavnene fra et specifikt bibliotek. Jeg har brug for at kunne udtrække 6 filnavne fra dette array, men hver gang dette sker, skal der trækkes 6 nye - dvs. de 6 filnavne skal trækkes fra en eller anden form for random funktion, eller måske skal arrayet bare sorteres random før jeg udtrækker de 6 øverste i array´et.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
<% ' Vi opretter et array Dim iLoop, strTmp Dim resultArray(6) strDel = "" For iLoop = 1 to 100 strTmp = strTmp & strDel & "minfil" & iLoop & ".txt" strDel = ";" Next workArray = split(strTmp,";")
response.write "Det oprindelige array indeholder " & ubound(workArray) &" elementer<br>" ' Udtelementer 6 elementer hvorefter de via funktionen dumpArray udskrives randomShuffle workArray, resultArray dumpArray resultArray response.write "Det oprindelige array indeholder " & ubound(workArray) &" elementer<br>"
' Udtelementer 6 elementer hvorefter de via funktionen dumpArray udskrives randomShuffle workArray, resultArray dumpArray resultArray response.write "Det oprindelige array indeholder " & ubound(workArray) &" elementer<br>"
' Udtelementer 6 elementer hvorefter de via funktionen dumpArray udskrives randomShuffle workArray, resultArray dumpArray resultArray response.write "Det oprindelige array indeholder " & ubound(workArray) &" elementer<br>"
' Denne Function udtelementer et element fra arrayet
Function randomShuffle (byref workArray, byref resultArray) Dim arraySize, intIndex, strDraw arraySize = ubound(resultArray) ' Størrelse på array
For iLoop=0 to arraySize randomize intIndex = Int(ubound(workArray) * rnd()) resultArray(iLoop) = drawFromArray(workArray,intIndex) Next End Function
Function drawFromArray (byref workArray, intIndex) Dim arraySize, strDraw arraySize = ubound(workArray) ' Størrelse på array
' Sætter resultat = element nr. intIndex i workArray strDraw = workArray(intIndex)
' Nu skal elementet fjernes rigtigt ' Dette gøres ved at gøre arrayet et element mindre ' Det skal sikres at det element der skal slettes ligger til sidst! If intIndex<arraySize Then ' Det element der skal fjernes ligger pt. ikke til sidst workArray(intIndex) = workArray(arraySize) ' Det sidste element i arrayet bliver kopieret over det element som er udtrukket Redim preserve workArray(arraySize-1) ' Arrayet gøres nu et element mindre End If
drawFromArray = strDraw End Function
Function dumpArray(dumpArray) response.write "Array indeholder:<br>" If isarray(dumpArray) Then For iLoop=0 to ubound(dumpArray) response.write "Element " & iLoop & ": " & dumpArray(iLoop) & "<br>" Next Else response.write "EJ AR" End If response.write "<hr>" End Function %>
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.