Avatar billede kren Nybegynder
19. juni 2000 - 13:48 Der er 15 kommentarer og
2 løsninger

randomize, uden de samme tal

har problemer med at den kører i et uendeligt loop, kan i give mig et råd om hvad og hvor fejlen er.
Denne her skal kunne udvælge 9 tal, 7 rigtige og 2 tillægstal, i et Lotto system.



<%

dim Randnum(9)
Randomize

for i=1 to 9

Randnum(i) = Int(Rnd * 36) +1 
check = Randnum(i)
call ifens

next


'- Tjekker for ens tal
sub ifens
    do while t < 10
    if check = Randnum(t) then
    Randnum(i) = Int(Rnd * 36) +1
    check = Randnum(i)
    t = 0
    else
    end if
    t = t+1
    response.write t
    loop
end sub




%>

<%
response.write Randnum(1) & "&nbsp;&nbsp;" & Randnum(2) & "&nbsp;&nbsp;"
response.write Randnum(3) & "&nbsp;&nbsp;" & Randnum(4) & "&nbsp;&nbsp;"
response.write Randnum(5) & "&nbsp;&nbsp;" & Randnum(6) & "&nbsp;&nbsp;"
response.write Randnum(7) & "&nbsp;&nbsp;<b>" & Randnum(8) & "&nbsp;&nbsp;"
response.write Randnum(9) & "</b>"


%>
Avatar billede tigerdyr Nybegynder
19. juni 2000 - 13:58 #1
For hvert tal du trækker tjekker du om tallet er lig med et af dem du tidligere har trukket... hvis det er skal du lave et nyt random nr. til igen...
Avatar billede sone Nybegynder
19. juni 2000 - 14:07 #2
Før du bruger RND første gang, skal du lave en linie med:

  Randomize

så starter RND-algoritmen et tilfældigt sted hver gang
Avatar billede kren Nybegynder
19. juni 2000 - 14:12 #3
sone


Jeg ligger da ud med med Randomize, den næstøverste linje. Skal der være et til?

Tigerdyr

Det var også meningen mit loop skulle kunne klare det.
Avatar billede sone Nybegynder
19. juni 2000 - 14:14 #4
kren: Sorry, det så jeg ikke.
Så er jeg ikke helt med på hvad problemet er...?
Avatar billede kren Nybegynder
19. juni 2000 - 14:21 #5
SONE:
Når jeg kører dette, så forsætter det bare i et uendeligt loop...  altså som om den altid finder 2 ens, og så skal udregne et nyt tal.
Avatar billede erikjacobsen Ekspert
19. juni 2000 - 14:41 #6
En skitse til en løsning: Læg de 36 tal, 1 til 36, i et array, og bland dette grundigt. Tag derefter de
7+2 første. Id'e til blanding: I en løkke bytter du 1'te element med et tilfældigt andet, 2't element
med et tilfældigt andet ... og så det 36'te element med et tilfældigt andet. Du er sikker på at få blandet
grundigt, og du bliver færdig i endelig tid. Vil du eller skal jeg? ;-)
Avatar billede kren Nybegynder
19. juni 2000 - 14:58 #7
ErikJacobsen

Vil du?  jeg blev lidt "lost" ud fra din forklaring. =)
Avatar billede sone Nybegynder
19. juni 2000 - 15:17 #8
En færdig løsning:

dim Randnum(9)
Randomize

for i=1 to 9
  Randnum(i) = NewNumber(i)
  Response.Write(i & ": " & Randnum(i) & "<BR><BR>")
next

Function NewNumber(i)
  DIM NytTal, EnsTemp
  EnsTemp = 1
  NytTal = Int(Rnd * 36) + 1
  DO WHILE EnsTemp>0
    EnsTemp = 0
    FOR j=1 TO i-1
      IF Randnum(j) = NytTal THEN
        EnsTemp=EnsTemp+1
        NytTal = Int(Rnd * 36) + 1
        EXIT FOR
      END IF
    NEXT
  LOOP
  NewNumber = NytTal
END FUNCTION
Avatar billede erikjacobsen Ekspert
19. juni 2000 - 15:34 #9
dim tal(36)
randomize
for i=1 to 36
  tal(i)=i
next
for i=1 to 36
  x=Int(Rnd*36)+1
  tmp=tal(x)
  tal(x)=tal(i)
  tal(i)=x
next
response.write "De 7 tal: "
for i=1 to 7
  response.write tal(i) & " "
next
response.write "Tillægstal"
for i=8 to 9
  response.write tal(i) & " "
next

Utestet - men ideen er der.
Sone: Med din løsning ved du aldrig hvornår du bliver færdig... ;-)
Avatar billede erikjacobsen Ekspert
19. juni 2000 - 15:35 #10
Hvorfor lærer jeg det aldrig - en lille fejl
Linien
  tal(i)=x
skal være
  tal(i)=tmp
Avatar billede sone Nybegynder
19. juni 2000 - 15:37 #11
Jeg bliver færdig når jeg har fundet de x forskellige tal. Da der på det y'te tal er (36-y+1)/36 chance for at finde et ikke brugt tal, så er jeg ret sikker på at blive færdig.
Avatar billede erikjacobsen Ekspert
19. juni 2000 - 15:40 #12
Nemlig, sone, "ret sikker"  ;-))
Avatar billede kren Nybegynder
19. juni 2000 - 15:58 #13


Sone jeg prøvede ikke din, da Erikjacobsen påpegede at man ikke er helt sikker på at den så bliver færdig.
Men Erikjacobsen din virker, jeg skal bare lige lave lidt om på den, så ikke netscape brokker sig..  Men det er såmænd småting, Mange tak for hjælpen.
Avatar billede tigerdyr Nybegynder
19. juni 2000 - 16:42 #14
Hey Sone, fed løsning :o))
Men det er klart den rigtige måde at løse problemet på!
Avatar billede erikjacobsen Ekspert
19. juni 2000 - 21:21 #15
Det er da forhåbentlig ikke min algoritme, der får Netscape til at brokke sig.... ;-)
Hvad mener du, min stribede ven, hvilken er bedst sones eller min ?? Hehe, I mine
unge dage gjorde jeg som sone, helt klart. Man bliver klogere, tykkere, gladere og
rigere med årene. ;-)
Avatar billede tigerdyr Nybegynder
20. juni 2000 - 07:18 #16
ARRRGHH!!! UPS! (STORT UPS), det var selvfølgelig din, Erik, jeg mente :o))
Jeg har selv haft brug for den funktion en del gange og aldrig tænkt videre over at det kunne løses så nemt :o))

Klart nok, det er selvfølgelig erikjacobsens løsning der er den rigtige!
Avatar billede erikjacobsen Ekspert
20. juni 2000 - 09:26 #17
Se det kan jeg lide: ros, ros og ros.
En meget glad erikjacobsen ;-)))
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