Hej!
Jag har testat denna slumpfunktion som är suverän:
SET RS = oConn.Execute("SELECT id,sMov FROM ...")
Dim uboundarray, antalslump, i, j, k, slumptal
Dim GRrecept, slumparrayrec(1,6), antalrec
If NOT RS.EOF Then
GRrecept = RS.GetRows
uboundarray=UBound(GRrecept,2)
antalrec=7: antalslump=0: i=0
If uboundarray+1 > antalrec Then
Do Until antalslump = 7
Randomize
slumptal=Int(Rnd*(uboundarray+1-i))
slumparrayrec(0,antalslump) = GRrecept(0,slumptal)
slumparrayrec(1,antalslump) = GRrecept(1,slumptal)
For j = slumptal To uboundarray-1-i
GRrecept(0,j) = GRrecept(0,j+1)
GRrecept(1,j) = GRrecept(1,j+1)
Next
ReDim Preserve GRrecept(UBound(GRrecept, 1), UBound(GRrecept, 2) - 1)
i=i+1
antalslump = antalslump+1
Loop
Else
For j = 0 to uboundarray
slumparrayrec(0,j) = GRrecept(0,j)
slumparrayrec(1,j) = GRrecept(1,j)
Next
End If
For k=0 To UBound(slumparrayrec,2)
response.write "<a href=rec.asp?id=" & slumparrayrec(0,k) & ">" & slumparrayrec(1,k) & "</a> "
Next
Else
response.write "Det finns inga recept."
End If
Det jag skulle vilja göra är att om jag endst har t.ex. 20 eller 30 poster i databasen så skulle jag vilja slumpa ut dom så att dom slumpades ut till 366 poster...är det möjligt att göra med denna array eller ska man försöka sig på nåt annat sätt?
Helst skulle jag se att samma post inte uppenbarade sig efter varandra...
Alltså:
1. Jag har 20-30 poster i databsen
2. Vill slumpa dom och inte få samma värde efter varann
3. Vill få ut 366 utskrifter av de 20 slumpade posterna
I vilket fall hade jag inte använt denna kod för detta, eftersom den är gjord för att inte få dubletter alls. Den tar bort de värde i arrayen som slumpats fram, dvs det kommer inte att gå.
Istället får du slumpa ett värde du har, sedan slumpa nästa, och kontrollera att det inte är samma som det föregående.
Om du inte accepterar post14-post22-post14 så får du utöka kontrollen så att du inte får samma värde för nära inpå varandra.