ALEATORIOS NO REPETIDOS
Hola a todos.
Me encuentro haciendo un generador de horarios aleatorios con Macros y Vbasic. Necesito ayuda en la generación de números aleatorios que se encuentren dentro de un rango pero no se repitan. Es decir, si el rango es de 1 a 2 y selecciona 2, el segundo número que seleccione no sea otra vez 2.
Mil gracias a quien me pueda ayudar
Me encuentro haciendo un generador de horarios aleatorios con Macros y Vbasic. Necesito ayuda en la generación de números aleatorios que se encuentren dentro de un rango pero no se repitan. Es decir, si el rango es de 1 a 2 y selecciona 2, el segundo número que seleccione no sea otra vez 2.
Mil gracias a quien me pueda ayudar
Usa como apoyo la función Randomize
Para el ejemplo supongamos que deseamos generar números aleatorios entre 1 y 1000
Randomize Timer
For i = 1 to 100
Valor = 1 + Rnd * 999
Next i
Ahora, si la cantidad de numeros a generar es cercano al rango numérico, es probable que se te de alguna repeticion, en este caso, vas a tener que ir almacenando los valores aleatorios en un vector y, con cada numero generado, verificar que no exista en la lista antes de agregarlo.
Saludos
Para el ejemplo supongamos que deseamos generar números aleatorios entre 1 y 1000
Randomize Timer
For i = 1 to 100
Valor = 1 + Rnd * 999
Next i
Ahora, si la cantidad de numeros a generar es cercano al rango numérico, es probable que se te de alguna repeticion, en este caso, vas a tener que ir almacenando los valores aleatorios en un vector y, con cada numero generado, verificar que no exista en la lista antes de agregarlo.
Saludos
Para llenar n aleatorios en un vector
Dim aleatorios(1 to n) as Integer
for i=1 to n
do
valor=1+Int(Rnd*999)
for j=1 to n
yaHay=false
if valor=aleatorios(j) then
yaHay=true
j=n
endif
next
loop while(yaHay)
aleatorios(i)=valor;
next
Dim aleatorios(1 to n) as Integer
for i=1 to n
do
valor=1+Int(Rnd*999)
for j=1 to n
yaHay=false
if valor=aleatorios(j) then
yaHay=true
j=n
endif
next
loop while(yaHay)
aleatorios(i)=valor;
next
