Numeros aleatorios

Juan
24 de Junio del 2004
Quiero tener numeros aleatorios enteros entre (1- 8) y los cuales no se repitan.
Ejemplo:
5,7,8,4,1,3,6,2.
QUE NO SE REPITAN
GRACIAS.

jhon
24 de Junio del 2004
no te entiendo muy bien:
1º deseas que salga un numero al azar entre 1 y 8?
2º deseas que estos esten desordenados?

con respecto a lo primero puedes usar Rnd, este de devuelve un numero entre 0 y 1. Así:

private sub . . . .
dim numAzar as integer
Randomize
numAzar=8*Rnd
end sub

Con respecto a lo segundo no sabría ayudarte en este momento, tendría que hacer algunas pruebas.

saludos

sdemingo
24 de Junio del 2004
Hola,

con este ejemplo obtienes un número aleatorio entre 1 y 8

Dim limiteInf As Integer
Dim limiteSup As Integer
Dim resultadoAleatorio As Integer

limiteSup = 8
limiteInf = 1

Randomize
resultadoAleatorio = Int((limiteSup - limiteInf + 1) * Rnd + limiteInf)

MsgBox resultadoAleatorio


y si no quieres que se repita.... tendrás que guardando los números que vayas obteniendo en un array e ir comparando el nuevo que generes con los que tienes guardados para comprobar que no se repita.

salu2
sdemingo

Juan
24 de Junio del 2004
Quisiera que los numeros aleatorios entre (1-8) no se repitan. Ejemplo: 5,8,7,3,6,1,2,4.(que solo parezcan 8 numeros y que estos no sean iguales).
No quiero que salgan por ejmplo: 5,8,5,6,4,2,3,7 (el "5" se repite).
Gracias, ojalá me puedan ayudar.

sdemingo
24 de Junio del 2004
Dim numeros() As Integer
Dim i As Integer

Private Sub Command1_Click()

Dim limiteInf As Integer
Dim limiteSup As Integer
Dim resultadoAleatorio As Integer
Dim repetido As Boolean
Dim n As Integer

limiteSup = 8
limiteInf = 1

repetido = True
Do While repetido
repetido = False
Randomize
resultadoAleatorio = Int((limiteSup - limiteInf + 1) * Rnd + limiteInf)
For n = LBound(numeros) To UBound(numeros)
If numeros(n) = resultadoAleatorio Then
repetido = True
Exit For
End If
Next n
Loop

i = i + 1
ReDim Preserve numeros(i)
numeros(i) = resultadoAleatorio

Label1.Caption = Label1.Caption & resultadoAleatorio & vbCrLf

If UBound(numeros) = 8 Then
MsgBox "ya están todos lo números"
End
End If

End Sub

Private Sub Form_Load()
i = 0
ReDim Preserve numeros(i)
numeros(i) = 0
End Sub

Juan
24 de Junio del 2004
Gracias sdemingo, eso era exaatamente lo que quería.
MUCHAS GRACIAS