Avatar billede mr_miyagi Nybegynder
27. september 2006 - 11:37 Der er 1 kommentar og
1 løsning

Tilfældige tal i ASP

Hej
Jeg har et problem med tilfældige tal i et array.
jeg har lavet flg. stump i ASP

<%
RANDOMIZE
dim strNumberArray()
dim randomNr, check, counter1, counter2, tester

redim strNumberArray(1)
randomNr = INT((10)*RND())
strNumberArray(0) = randomNr
AddArray = 1
counter = 0

while (UBound(strNumberArray) < 4)

    check = "ok"
    randomNr = INT((10)*RND())
    for i = 0 to UBound(strNumberArray)
        if randomNr = strNumberArray(i) then
            check = "fail"
        end if
    Next

    if NOT check = "fail" then
        AddArray = AddArray + 1
        redim strNumberArray(AddArray)
        strNumberArray(counter) = randomNr
        counter = counter + 1
    end if
Wend
%>


Det som scriptet skal gøre er at vælge 3 tilfældige tal mellem 0 og 10 og smide dem ind i en array på 3 pladser,
tallene SKAL være forskellige i arrayet. Jeg ville mene koden burde virke men det gør det ikke.
Tallene kan resikere at blive ens, samt hvis jeg skriver arrayet ud efter while løkken, er tallene faktisk glemt pånær
det tal der står på plads nr 3.

jeg har checket efter og lavet næsten samme kode i c# for at se om det var koden der fejlede (i c# brugte jeg godt nok en arraylist) og der virkede det fint.

Er der nogle der har en ide til en anden måde som jeg kan lave det på i ASP så det virker?
Avatar billede busschou Praktikant
27. september 2006 - 18:22 #1
Der kan være flere ting i det
Det at dit array bliver tom på nær den sidste...det skyldes nok din redim i løkken som netop laver et nyt array een større
I min test fandt jeg også ud af at hvis til tal er 0 og du sammenligner med en plads i et array som ikke indeholder noget...så tror den det er en dublet

Jeg har testet på kryds og tværs...og nedenstående virker...håber du kan bruge det :o)
----------
<%
RANDOMIZE
dim strNumberArray()
dim randomNr

arrSize = 3
redim strNumberArray(arrSize)
randomNr = INT((10)*RND())
strNumberArray(0) = randomNr

for i = 1 to arrSize-1
    randomNr = INT((10)*RND())
    for j = 0 to i-1
        if randomNr = strNumberArray(j) then
            randomNr = INT((10)*RND())
            j = 0
        end if
    Next
    strNumberArray(i) = randomNr
next

for i=0 to ubound(strNumberArray)-1
response.write strNumberArray(i)&","
next
%>
Avatar billede mr_miyagi Nybegynder
28. september 2006 - 08:39 #2
ahh oki på den måde.
Det kan jeg ihvertald
jeg troede at redim tilføjede en ekstra plads i arrayet.
Takker for hjælpen, du får alle point.
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