Necesito una funcion para reordenar o mezclar al azar un array de strings.
O sea, que de un array con los elementos ordenados: "paco", "42", "35", "gato"
luego de pasarle la funcion pueda quedar algo como: "35", "paco", "gato", "42"
Alguien me puede ayudar?
Se me ocurre algo como esto:
Variables Globales
Dim cadena1(3) as string
Dim cadena2(3) as string
Declaracion de la cadena1
cadena1(0) = "paco"
cadena1(1) = "42"
cadena1(2) = "35"
cadena1(3) = "gato"
Procedimiento que reordena aleatoriamente la cadena1 y la guarda en cadena2
Dim Bandera As Boolean
Dim vNum As Integer
Randomize
cadena2(0) = ""
cadena2(1) = ""
cadena2(2) = ""
cadena2(3) = ""
For x = 0 To 3
Bandera = True
Do While Bandera
vNum = Int(Rnd * 4)
If cadena2(vNum) = "" Then
cadena2(vNum) = cadena1(x)
Bandera = False
End If
Loop
Next
Option Explicit
Private Sub Form_Load()
Dim i As Long
Dim svData() As String
ReDim svData(25)
For i = 0 To UBound(svData)
svData(i) = i
Next
MixUp svData
For i = 0 To UBound(svData)
Debug.Print svData(i)
Next
End Sub
Private Sub MixUp(svData() As String)
Dim sTemp As String
Dim lIndex As Long
Dim lIndex1 As Long
Dim i As Long
Randomize Timer
For i = 0 To UBound(svData) * 5
lIndex = Rnd * UBound(svData)
lIndex1 = Rnd * UBound(svData)
sTemp = svData(lIndex): svData(lIndex) = svData(lIndex1): svData(lIndex1) = sTemp
Next
End Sub