Generar números aleatorios que no se repitan

Necesito crear una función en VBA la cual me genere números aleatorios que no se repitan, tengo el siguiente código pero no estoy seguro que esdta función así de simple evite crear números aleatorios que se repitan

Dim MyValue
'MyValue = Int((1000000 * Rnd) + 1)
Texto1.Value = Myvalue

¿Qué tengo que incluirle a este código para evitar que la función se me repita?

2 Respuestas

Respuesta
2
Uso esta función que la saque de la web y después la armo para lo que necesite
armalo en el visual y lo vas a ver más claro
Private Sub Command1_Click()
Dim n As Long
n = InputBox(" Ingresar un número ", " Números aleatorios no repetidos ")
Call Generar_Aleatorio(n)
End Sub
Function Generar_Aleatorio(Numero As Long)
' Vector para almacenar los números aleatorios
Dim Aleatorios() As Integer
Dim n As Long, i As Long
'Redimensiona el vector
ReDim Aleatorios(Numero) As Integer
'Recorre el vector
For i = LBound(Aleatorios()) + 1 To UBound(Aleatorios())
n = i
Do
n = n - 1
' Compara hacia atrás, si está repetido genera un nuevo _
número y lo guarda en el índice del vector _
que estaba repetido, es decir en esa posición
If Aleatorios(i) = Aleatorios(n) Then
Aleatorios(i) = Int(((Numero + 1) * Rnd) + 0)
n = i
End If
Loop Until n = 0
Next
' Agrega los números al ListBox
For i = LBound(Aleatorios()) To UBound(Aleatorios())
List1.AddItem Aleatorios(i)
Next
End Function
Private Sub Form_Load()
Command1.Caption = " Generar aleatorio "
End Sub
Respuesta
1
Rnd es una función que genera números aleatorios, al multiplicarlo por el valor que tienes no se repetirán los números, hay una probabilidad, de todas formas si le agregas un parámetro puedes ampliar esta probabilidad de repetición de un numero. Revisa la ayuda de la función y utiliza ese parámetro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas