Om jag har arrayen Hej Christian Fick lite tid över att fixa ett fungerande exempel: Jag får Type missmatch om jag skriver Vet faktiskt inte, det kanske finns någon smart som kan svara på det. Oki nu fungerar det NÄSTAN, konstigt fel nu.. jag testade å skrev såhär.. Löste fel 1 Ah, jag tänkte mig att arrayen började på 1 när jag gjorde exemplet. kom på det själv :) men tack för all hjälp ändå, Nu har jag en fin funktion på sidan :)Kasta om en array
speakup(5)
Hur blandar jag om dem. Asså slumpartat omblanding om man säger så.Sv: Kasta om en array
Skrev ihop en funktion ifrån huvet. Det var också länge sedan jag proggade ASP så det lär vara massor av syntax-fel, och säkert en del off-by-one-buggar etc.
Men det är en start iaf
<code>
MyNewArray = KaosMyArray( speakup )
Function KaosMyArray(origArray)
Randomize()
Dim newArray
newArray = Array( UBound(origArray) )
For I = 1 to UBound(origArray)
rIndex = Random( UBound(origArray) - I ) + I
newArray(I) = origArray(rIndex)
origArray(rIndex) = origArray(I)
Next
KaosMyArray = newArray
End Function
</code>
Hoppas det hjälper
// MvH BjörneSv:Kasta om en array
<code>
<%
Dim speakup(5)
for a = 1 to UBound(speakup)
speakup(a) = 100 + a
next
Response.Write "Före<br />"
PrintMyArray(speakup)
newSpeakup = KaosMyArray( speakup )
Response.Write "<br />Efter<br />"
PrintMyArray(newSpeakup)
Function KaosMyArray(origArray)
Randomize()
size = UBound(origArray)
Dim newArray()
ReDim newArray(size)
For I = 1 to size
rIndex = Fix(Rnd*(size-I+1)+1)
newArray(I) = origArray(rIndex)
origArray(rIndex) = origArray(size-I+1)
Next
KaosMyArray = newArray
End Function
Sub PrintMyArray(myArray)
For a = 1 to UBound(myArray)
Response.Write myArray(a) & "<br />"
next
End Sub
%>
</code>
// MvH BjörneSv: Kasta om en array
speakup = KaosMyArray(speakup)
Varför får jag det?Sv:Kasta om en array
Annars kan du ju skippa funktionen, som så här:
<%
Dim speakup(5)
for a = 1 to UBound(speakup)
speakup(a) = 100 + a
next
Response.Write "Före<br />"
PrintMyArray(speakup)
Randomize()
size = UBound(speakup)
For I = 1 to size
rIndex = Fix(Rnd*(size-I+1)+I)
If Not rIndex = I Then
tmp = speakup(I)
speakup(I) = speakup(rIndex)
speakup(rIndex) = tmp
End If
Next
Response.Write "<br />Efter<br />"
PrintMyArray(speakup)
Sub PrintMyArray(myArray)
for a = 1 to UBound(myArray)
Response.Write myArray(a) & "<br />"
next
End Sub
%>
// MvH Björne
Sv: Kasta om en array
speakup(0)="1"
speakup(1)="2"
speakup(2)="3"
speakup(3)="4"
speakup(4)="5"
Randomize()
size = UBound(speakup)
For I = 1 to size
rIndex = Fix(Rnd*(size-I+1)+I)
If Not rIndex = I Then
tmp = speakup(I)
speakup(I) = speakup(rIndex)
speakup(rIndex) = tmp
End If
Next
men en av dem försvinner alltid, asså den blir tom ("")... och "1" kommer alltid först.
Kan man lösa detta?
Sv:Kasta om en array
hade
dim speakup(5) ändrade till 4 så funkade det... men nu ska jag fixa så den slumpar första oxå, men det klarar jag nog av...Sv: Kasta om en array
Dim speakup(4)
speakup(0)="1"
speakup(1)="2"
speakup(2)="3"
speakup(3)="4"
speakup(4)="5"
Randomize()
size = UBound(speakup) - LBound(speakup) +1
For I = LBound(speakup) to UBound(speakup)
rIndex = Fix(Rnd*(size-I)+I)
If Not rIndex = I Then
tmp = speakup(I)
speakup(I) = speakup(rIndex)
speakup(rIndex) = tmp
End If
Next
// MvH Björne
Sv:Kasta om en array