Avatar billede Slettet bruger
25. juni 2006 - 20:50 Der er 5 kommentarer og
1 løsning

flere randomizes

Hejsa

jeg har her denne kode:
<%
image_directory1 = "************"
Set directory1=server.createobject("scripting.filesystemobject")
Set allfiles1=directory1.getfolder(server.mappath(image_directory1))
For each image in allfiles1.files
Image_Array1 = Image_Array1 + image.Name & ","
count_image1 = count_image1 + 1
Next
Image_Array1 = split(Image_Array1,",")
randomize
randomfile1 = int(rnd*count_image1)
Set allfiles1 = Nothing
Set directory1 = Nothing
%>

- denne finder ét tilfældigt billede i en given mappe... og dette virker som sådan også OK! Men hvordan kan man lave den sådan at den finder fire tilfældige billeder i samme mappe UDEN at det samme billede nogensinde må blive vist mere end én gang?

\Dan
Avatar billede nielle Nybegynder
25. juni 2006 - 21:13 #1
<%
image_directory1 = "************"
Set directory1 = Server.CreateObject("scripting.filesystemobject")
Set allfiles1 = directory1.GetFolder(Server.MapPath(image_directory1))
For Each image In allfiles1.Files
    Image_Array1 = Image_Array1 + image.Name & ","
    count_image1 = count_image1 + 1
Next
Image_Array1 = split(Image_Array1,",")

Randomize

randomfile1 = Int(Rnd * count_image1)

Do
    randomfile2 = Ind(Rnd * count_image1)
Loop Until randomfile2<>randomfile1

Do
    randomfile3 = Ind(Rnd * count_image1)
Loop Until randomfile3<>randomfile2 And randomfile3<>randomfile1

Do
    randomfile4 = Ind(Rnd * count_image1)
Loop Until randomfile4<>randomfile3 And randomfile4<>randomfile2 And randomfile4<>randomfile1

Set allfiles1 = Nothing
Set directory1 = Nothing
%>
Avatar billede Slettet bruger
26. juni 2006 - 08:48 #2
- Ja, Okay... Men kan det virkelig ikke laves på en smartere måde?
Hvad nu hvis jeg har en mappe som indeholder fx. 5000 billeder og så at jeg gerne vil have vist 100 tilfældige billeder på siden, hvor der ikke må være to billeder (eller flere) som der det samme billede...
- er der så virkelig ikke en bedre måde end dette her...? I så fald ville det jo være rigtig mange gange at den loop-sætning skal skrives og det ville også blive nogle meget lange loop-sætninger til sidst...

Er der virkelig ikke en nemmere og bedre måde?

\Dan
Avatar billede morhan Novice
26. juni 2006 - 09:05 #3
samme princip som nielles eksempel, blot med automatik

<%
count_image1 = 10

Dim randomfiles(3) 'plads til 4 elementer

randomize

For i=0 To 3
    Do
        number = int(rnd*count_image1)

        For n=0 To i-1
            If number = randomfiles(n) Then Exit For
        Next

    Loop Until n = i

    randomfiles(i) = number

Next

Response.Write "Følgende tilfældige filer er valgt:<br>"
Response.Write Join(randomfiles, "<bR>")
%>
Avatar billede nielle Nybegynder
26. juni 2006 - 09:06 #4
Siden at du nu spørger hele tre gange om der ikke er en smartere/bedre måde, så er svaret "ja, ja, og ja" ;^)

Det ville bare have været overkill at begynde på den når dit spørgsmål nu gik på 4 poster:

Dim randomfile(100)

Randomize

For i=LBound(randomfile) To UBound(randomfile)
    nyRandomfileX = True

    Do
        nyRandomfileX = True
        randomfileX = Ind(Rnd * count_image1)

        For j=LBound(randomfile) To i-1
            If randomfileX = randomfile(j) Then
                nyRandomfileX = Fale
                Exit For
            End If
        Next

    Loop Until nyRandomfileX
Next
Avatar billede Slettet bruger
26. juni 2006 - 22:08 #5
Tak for hjælpen nielle! Det var det sidste script jeg brugte (dog efter et par rettelser)...

- smid et svar - for point!

\Dan
Avatar billede nielle Nybegynder
26. juni 2006 - 22:09 #6
Svar :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB