---
title: "Slumpa tal??"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/9932-slumpa-tal"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "slurken"
published: "2001-06-07T16:42:00.000Z"
updated: "2001-06-08T07:09:00.000Z"
replies: 2
views: 218
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/9932-slumpa-tal"
---

# Slumpa tal??

## #1 — slurken, 2001-06-07T16:42Z

Om man har en funktion som returnerar ett slump tal. Om jag nu anropar den exempelvis 20 gånger vill jag att samma tal inte får returneras flera gånger. Jag vill alltså ha 20 olika tal.

Hur löser man detta på bästa sätt?

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

## #2 — LarsG, 2001-06-07T17:26Z

Du får väl ha en array där du lagrar talen och sedan får du göra en check när tar fram ett nytt tal. Ungefär

```
Dim numbers(19)
Dim i,j,r,unique

randomize
for i = 0 to 19
    unique = true
    do 
        r = yourrndfunction(yourrndparameters)
        if  i > 0 then
            for j = 0 to i - 1
                if r = numbers(j) then
                   unique = false
                   exit for
                end if
            next
        end if
        if  unique then
            exit do
        end if
        unique = true
    loop
    numbers(i) = r
next
```

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

## #3 — PatrikB, 2001-06-08T07:09Z

hello,

denna slumpar fram x antal unika nummer från n antal nummer:

```
	'## -- returnerar en kommaterad sträng av unika nummer --
	Private Function getUniqueNo(ByVal HowManyNumbers, ByVal FromTotalNumbers) ' As String
		Dim m_strNumbers
		Dim m_intUniqueNo
		
		'## -- kolla så att antal unika nummer man vill ha inte
		'##    överstiger det antal nummer att välja från --
		If HowManyNumbers > FromTotalNumbers Then Exit Function

		m_strNumbers = ""
		
		Randomize
		
		For I = 1 To HowManyNumbers
			
			m_intUniqueNo = Cint((rnd*FromTotalNumbers) + 0.5)
			If InStr(m_strNumbers,"#" & m_intUniqueNo & ",") > 0 Then
				I = I - 1
			Else
				m_strNumbers = m_strNumbers & "#" & m_intUniqueNo & ","
			End If
		Next
		m_strNumbers = Replace(m_strNumbers,"#","")
		m_strNumbers = Left(m_strNumbers,Len(m_strNumbers) - 1)
		getUniqueNo = m_strNumbers
	End Function
```

Använd den så här:

```
'## -- hur många unika nummer som ska returneras --
intTotUniqueNo = 5 

'## -- hur många nummer att välja från --
intTotNo = 20

'## -- hämta 5 slumpade tal från 1 - 20 --
strUniqueNo = getUniqueNo(intTotUniqueNo, intTotNo)
```

Nu kan du lätt splitta upp den returnerade strängen:

```
arrNumbers = Split(strUniqueNo,",")
```

cya,
PatrikB

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/9932-slumpa-tal
