---
title: "Slumpa med array"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/102163-slumpa-med-array"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Danielkun"
published: "2004-04-23T07:41:30.000Z"
updated: "2004-04-23T12:52:56.000Z"
replies: 3
views: 353
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/102163-slumpa-med-array"
---

# Slumpa med array

## #1 — Danielkun, 2004-04-23T07:41Z

Hur skulle en bit kod se ut som Slumpar fram ett tal och sedan kollar om detta tal finns i en array eller inte?

Om talet finns så slumpar den fram ett nytt tal ända tills ett tal som inte finns med i arrayen kommer upp.

Då fortsätter koden..

Jag vet hur man slumpar, men jag kommer inte riktigt på hur jag ska bygga dessa loopar.

Permalänk: https://www.webforum.nu/p/102163

## #2 — dAEk, 2004-04-23T09:48Z

Här är ett sätt...

Om det slumpade talet finns i arrayen slumpas ett nytt tal fram tills att det inte finns i arrayen. 

\[nedan slumpas ett tal mellan 1-25\]

```
Option Explicit

Dim iArray(13)
    iArray(0)  = 1
    iArray(1)  = 2
    iArray(2)  = 3
    iArray(3)  = 4
    iArray(4)  = 5
    iArray(5)  = 6
    iArray(6)  = 7
    iArray(7)  = 8
    iArray(8)  = 9
    iArray(9)  = 10
    iArray(10) = 11
    iArray(11) = 12
    iArray(12) = 13
    iArray(13) = 14

Dim arrLen, rndNumber
arrLen = clng(UBound(iArray))

Randomize
rndNumber = clng((24-1 +1)*Rnd() +1)

Call chkRndNumber(rndNumber)

Sub chkRndNumber(lngNumber)
	Dim i
	Dim bMatch
	    bMatch = false
	
	for i=0 to arrLen
		if (CLng(iArray(i)) = CLng(lngNumber)) then 
			bMatch = true
			exit for
		end if
	next
	
	if (bMatch) then '// talet finns i arrayen, slumpa fram ett nytt och jämför det mot arrayen
		Response.write(lngNumber  &" finns, slumpar på nytt")
		Randomize
		rndNumber = clng((24-1 +1)*Rnd() +1)
		Call chkRndNumber(rndNumber)
	else 
		Response.write(lngNumber &" finns ej, fortsätt...")
	end if
end Sub
```

Permalänk: https://www.webforum.nu/p/1329373

## #3 — PDahlen, 2004-04-23T12:16Z

\* REDIGERAD \*

Skräp också. Är tydligen så trött och bakfull att jag inte ens kan läsa den ursprungliga frågan ordentligt.

Men, men. Nedan är i alla fall en funktion för att enkelt kunna slumpa fram något ur en array. :)

En fråga, varför göra en koll om numret finns? Är det inte bättre att ta fram storleken på din array och sedan ta fram en slumpad siffra mellan 0 och arraystorleken. Sedan ta fram det som finns i array(slumpsiffra).

Defitionen av Rnd
 Int((upperbound - lowerbound + 1) \* Rnd + lowerbound)

```
Dim iArray(13)
    iArray(0)  = 1
    iArray(1)  = 2
    iArray(2)  = 3
    iArray(3)  = 4
    iArray(4)  = 5
    iArray(5)  = 6
    iArray(6)  = 7
    iArray(7)  = 8
    iArray(8)  = 9
    iArray(9)  = 10
    iArray(10) = 11
    iArray(11) = 12
    iArray(12) = 13
    iArray(13) = 14

Dim arrLen, rndNumber
arrLen = clng(UBound(iArray))

Randomize
rndNumber = Int((arrLen - 0 + 1) * Rnd + 0)

Response.Write iArray(rndNumber)
```

Permalänk: https://www.webforum.nu/p/1329441

## #4 — Danielkun, 2004-04-23T12:52Z

Tack för svaren!! 
Nu fick jag precis svar på det jag tänkte på tidigare!

PDahlen, tanken är att jag ska ta ut 200 (av 3000) poster ur en databas utan att få dubbletter, och då tänkte jag spara in ID't för varje post jag använt i en array. Och sedan kolla om den finns i arreyen allt eftersom jag slumpar vidare

Permalänk: https://www.webforum.nu/p/1329457

---

Tråden på webben: https://www.webforum.nu/amne/asp/102163-slumpa-med-array
