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
------------------ essentitia preter non sans multiplicandum
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
------------------
*Det jämnar ut sig sa han som sket i byxan och satte sig ned*
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
------------------
*Det jämnar ut sig sa han som sket i byxan och satte sig ned*