---
title: "Slumpa fram bilder"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/10012-slumpa-fram-bilder"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Fredriksson"
published: "2001-06-11T17:37:00.000Z"
updated: "2001-06-12T12:50:00.000Z"
replies: 10
views: 335
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/10012-slumpa-fram-bilder"
---

# Slumpa fram bilder

## #1 — Fredriksson, 2001-06-11T17:37Z

Jag har en mapp med bilder som heter 1.jpg, 3.jpg 34.jpg osv. Alla nummer finns alltså inte.

Nu vill jag slumpa fram 5st av dessa bilder.

Hur? :q

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

## #2 — LarsG, 2001-06-11T18:17Z

```
  dim allpictures()

  'läs in alla filnamn i en array allpictures, 
  'utlämnas som övning till läsaren
  
  dim choosen(4)
  dim i,pictures,choice

  randomize
  for i = 0 to 4
      choice = int((ubound(allpictures)-i)*rnd())
      choosen(i) = allpictures(choice)
      allpictures(choice) = allpictures(ubound(allpictures)-i)
  next
```

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

## #3 — PatrikB, 2001-06-11T19:18Z

hello,

**LarsG:**
Ditt exempel kan slumpa ut samma bild 2 ggr.

**Fredriksson:**
Du får här en hel sida som du bara behöver klippa och klistra.

Kolla in funktionen hur den funkar och hur arrayerna jobbar mot varandra för att visa slumpvis valda bilder.

Utifrån detta kan du skapa bildarrayen dynamiskt med hjälp av LarsGs kod.

```
<HTML>
<HEAD>
<TITLE>Unique Images.</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>

<BODY bgcolor="#FFFFFF" text="#000000">
<%
'## -- denna funktione returnerar en kommaterad sträng med unika nummer --
Function getUniqueNo(ByVal HowManyNumbers, ByVal FromNumbers) ' As String

	Dim m_strNumbers ' As String
	Dim I ' As Integer
	Dim m_intNumber ' As Integer
	
	'## -- se till att start strängen att lägga de slumpade 
	'##    nummrena är tom --
	m_strNumbers = ""
	
	'## -- slumpa tal med systemklockan som hjälp så att inte 
	'##    samma tal slumpas om och om igen --
	Randomize
	
	'## -- kolla om antalet unika nummer är mindre eller lika
	'##    med antal nummer att välja från --
	If HowManyNumbers > FromNumbers Then HowManyNumbers = FromNumbers
	
	'## -- loopa igenom och generera slumptal --
	For I = 1 To HowManyNumbers
		'## -- slumpa ut ett tal --
		m_intNumber = CInt(rnd*(FromNumbers))
		
		'## -- kolla om talet redan slumpats --
		If InStr(m_strNumbers,"#" & m_intNumber & ",") = 0 Then
			'## -- talet har inte tidigare slumpats. Lägg till nummret --
			m_strNumbers = "#" & m_intNumber & "," & m_strNumbers
		Else
			'## -- talet var redan utslumpat. backa tillbaka och kör en ggn till --
			I = I - 1
		End If
	Next
	
	'## -- ta bort staket avgränsaren --
	m_strNumbers = Replace(m_strNumbers,"#","")
	
	'## -- ta bort det sista komma-tecknet i strängen om det finns ngt --
	If Right(m_strNumbers,1) = "," Then
		m_strNumbers = Left(m_strNumbers,Len(m_strNumbers) - 1)
	End If
	
	'## -- returnera resultatet --
	getUniqueNo = m_strNumbers
End Function

Dim arrNumbers
Dim arrArray(9)
Dim I

arrArray(0) = "0.gif"
arrArray(1) = "1.gif"
arrArray(2) = "2.gif"
arrArray(3) = "3.gif"
arrArray(4) = "4.gif"
arrArray(5) = "5.gif"
arrArray(6) = "6.gif"
arrArray(7) = "7.gif"
arrArray(8) = "8.gif"
arrArray(9) = "9.gif"

'## -- de unika nummrena splittade till en array.
'##    Används för att plocka ut slumpvis valda positioner från 
'##    arrayen med bilder --
arrNumbers = Split(getUniqueNo(5,UBound(arrArray)),",")

For I = 0 To UBound(arrNumbers)
	Response.Write arrArray(arrNumbers(I)) & "<BR>"
Next
%>
</BODY>
</HTML>
```

cya,
PatrikB

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

## #4 — LarsG, 2001-06-11T19:35Z

> LarsG:
> Ditt exempel kan slumpa ut samma bild 2 ggr.

Nej det tycker jag inte. Hur då i så fall?

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

## #5 — PatrikB, 2001-06-11T20:10Z

Det kommer att bli lika bilder ngn ggn.
Denna rad:

```
int((ubound(allpictures)-i)*rnd())
```

Vi säger att UBound(allpictures) = 35
Kommer att första ggn slumpa tal som ligger mellan
0 och 35 - 0 i första loopen
0 och 35 - 1 för andra varvet ...

du ser ... det komemr att kunna slumpas likadana bilder ngn ggn.

cya,
PatrikB

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

## #6 — LarsG, 2001-06-11T20:25Z

Patrik, 

på platsen för den bild som man har valt så stoppar jag in den bild som ligger sist i arrayen.

dvs, om arrayen inneåller

A B C D E 

och jag väljer C så ser den ut som

A B E D E 

nästa gång och då väljer jag mellan dom 4 första

Om jag nu väljer D så blir det

A B E D E 

och sedan så väljer jag mellan dom 3 första osv.

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

## #7 — PatrikB, 2001-06-12T07:59Z

he, he ... stämmer ... 

provkörde och "visade" fel array ... då vart det många bilder som va lika.

kollade igenom lite mer noggrant och ser nu att den funkar alldeles utmärkt =O)

cya,
PatrikB

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

## #8 — Fredriksson, 2001-06-12T09:26Z

Så de båda koderna funkar alltså lika bra då, eller?

Funkar de även om inte alla nummer finns med?

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

## #9 — PatrikB, 2001-06-12T10:35Z

Båda koderna funkar även om vissa id-nummer tex fattas i databasen.

Tycker nog att LarsGs variant är bättre

cya,
PatrikB

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

## #10 — Fredriksson, 2001-06-12T12:42Z

:r

> 'läs in alla filnamn i en array allpictures, 
> 'utlämnas som övning till läsaren

Nån som har lust att göra detta???

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

## #11 — PatrikB, 2001-06-12T12:50Z

sök här på forumet om arrays ....

du kommer nog på en länk som går till en tutorial om arrayer som Vide gjort.

cya,
PatrikB

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/10012-slumpa-fram-bilder
