Listas aleatorias
Hola quiero generar una lista de 16 elementos con numeros aleatorios de 1 al 8 y cada numero se tiene repetir solo una vez. Este es el codigo que he escrito y que no funciona. Si alguien me pudiera ayudar se lo agradeceria mucho.Private Sub Form_Load()
X = 0
Randomize
While lstOrden.ListCount < 16
MiValor = Int((8 * Rnd) + 1)
For i = 0 To lstOrden.ListCount - 1
If lstOrden.List(i) = MiValor Then
X = 1 + X
Else: X = 0
If X = 2 Then
i = lstOrden.ListCount - 1
End If
End If
Next i
If X = 0 Then
lstOrden.AddItem MiValor
End If
If X = 1 Then
lstOrden.AddItem MiValor
End If
Wend
X = 0
Randomize
While lstOrden.ListCount < 16
MiValor = Int((8 * Rnd) + 1)
For i = 0 To lstOrden.ListCount - 1
If lstOrden.List(i) = MiValor Then
X = 1 + X
Else: X = 0
If X = 2 Then
i = lstOrden.ListCount - 1
End If
End If
Next i
If X = 0 Then
lstOrden.AddItem MiValor
End If
If X = 1 Then
lstOrden.AddItem MiValor
End If
Wend
Dim bVecUsado(1 to 8) as byte
dim miValor as byte
randomize
lstOrden.clear
erase bVecUsado
do while lstOrden.ListCount < 16
mivalor=int(8*rnd)+1
if (bvecusado(mivalor)<2) then
lstOrden.additem mivalor
endif
bvecusado(mivalor)=bvecusado(mivalor)+1
loop
No lo probé pero estoy 99% seguro que funcionará.
dim miValor as byte
randomize
lstOrden.clear
erase bVecUsado
do while lstOrden.ListCount < 16
mivalor=int(8*rnd)+1
if (bvecusado(mivalor)<2) then
lstOrden.additem mivalor
endif
bvecusado(mivalor)=bvecusado(mivalor)+1
loop
No lo probé pero estoy 99% seguro que funcionará.
