Avatar billede kjeld_klit Nybegynder
04. marts 2002 - 16:49 Der er 6 kommentarer og
1 løsning

Tilfældige og FORSKELLIGE tal

Hvordan sikre jeg mig at det tal der kommer op ikke "er taget".

Jeg har en For...Next løkke hvor der skal findes nogle tilfældige tal. Jeg har brugt Randomize og Rnd funktionerne.

Lad os sige at vi skal bruge 50 tal, men de skal komme i tilfældig orden, og alle tallene (1 - 50) skal bruges.

/....som er gået i stå :-(
Avatar billede a1a1 Novice
04. marts 2002 - 17:05 #1
du kan evt. lægge alle tal i en array og så "randomizere" array en

læs evt. her om hvorledes du kan "randomizere" en array

http://www.4guysfromrolla.com/webtech/110800-1.shtml

:)
Avatar billede jennemaan Nybegynder
04. marts 2002 - 17:12 #2
Dim arPick(1 To 50) As Double
Dim arResult(1 To 50) As Integer
Dim i As Integer, j As Integer, k As Integer, dblPick As Double

'Nu laver vi et array af tilfældige tal
Randomize
For i = 1 To 50
  arPick(i) = Rnd()
Next i

'Nu Sorterer vi efter de tilfældige tal og bruger indekset som tal mellem 1 og 50
j = 1
While j <= 50
k = 0
dblPick = 0
  For i = 1 To 50
    If arPick(i) <> 0 And arPick(i) > dblPick Then
        dblPick = arPick(i)
        k = i 'gem indeks
    End If
  Next i
  arResult(j) = k
  arPick(k) = 0 'set element til 0
  j = j + 1
Wend

'nu skriver vi lige de 50 tilfældige tal
For i = 1 To 50
  Debug.Print arResult(i)
Next i



/Jennemaan
Avatar billede kjeld_klit Nybegynder
04. marts 2002 - 17:40 #3
>jennemaan
Jeg får meddelelsen: Subscript out of range.
Det virker i Immediate vinduet, men hvis jeg skriver:
arrXX(arResult(i)) = "Et eller andet" tæller den en for højt. Jeg har prøvet med "- 1" forskellige steder, men det virker fortsat ikke.
Avatar billede jennemaan Nybegynder
04. marts 2002 - 17:47 #4
check hvordan dit arrXX er indekseret (om det starter med 0 eller 1)
Avatar billede kjeld_klit Nybegynder
04. marts 2002 - 17:52 #5
1
Helt præcist: arrXX(1 to 66)
Det kunne jeg jo lige så godt ha' sagt med det samme :-)
Avatar billede jennemaan Nybegynder
04. marts 2002 - 17:58 #6
hvis du checker arResult i watchvinduet vil du kunne se at der kun forefindes værdier mellem 1 og 50. Derfor må fejlen ligge et andet sted. Har du prøvet i debug mode (der hvor fejlen opstår) at checke de enkelte værdier/arrays?

/Jennemaan
Avatar billede kjeld_klit Nybegynder
04. marts 2002 - 18:18 #7
Jeg havde placeret arrXX() på den forkerte side af For...løkken

Så nu virker det

Tak for hjælpen
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