Access - Error en una SUb con RANDOMIZE

 
Vista:

Error en una SUb con RANDOMIZE

Publicado por TatirusRex (11 intervenciones) el 11/08/2005 16:37:32
Hice este procedimiento para elegir n cantidad de números al azar ingresando un límite inferior y un límite superior, pero me da el error que siempre me incluye el 0(cero) a pesar de estar por fuera de los parametros ingresados, tipo lim, inf. 10 y sup 100, igual me da el cero entre los elegidos y no se como solucionarlo.Me pueden dar una MANO?????
este es el SUB

Public Sub Random()

Dim miValor As Integer
Dim Límite_Superior As Integer, límite_inferior As Integer
Dim Listado As String, n As Integer, Conter As Integer

Listado = " "
n = InputBox("Ingrese la cantidad de registros a elegir al azar", _
"Random - n ")
Límite_Superior = InputBox("Ingrese el Límite Superior", _
"Random - Límite_Superior")
límite_inferior = InputBox("Ingrese el Límite Inferior", _
"Random - Límite_Inferior")
Conter = 0

Do Until Conter = n
Conter = Conter + 1
Listado = Listado & " - " & miValor


Randomize
miValor = Int((Límite_Superior - límite_inferior + 1) * Rnd + límite_inferior)

Loop

MsgBox "Solicitaste " & n & " números elegidos al azar con un" & _
vbCrLf & "Límite Superior =" & Límite_Superior & vbCrLf & _
" y un Límite Inferior = " & límite_inferior & vbCrLf & _
"Los números son: " & Listado

End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Solución para evitar incluir el número cero en la generación de números aleatorios

Publicado por Alejandro (4142 intervenciones) el 06/06/2023 23:58:57
Puedes solucionar el problema de incluir el número cero en la generación de números aleatorios ajustando la fórmula que calcula el valor aleatorio. En lugar de utilizar la expresión `(Límite_Superior - límite_inferior + 1) * Rnd + límite_inferior`, puedes usar la siguiente fórmula:

1
miValor = Int((Límite_Superior - límite_inferior) * Rnd + límite_inferior + 1)

Al sumar 1 al resultado de la fórmula, se evita que se incluya el límite inferior en los números generados.

Aquí tienes el código actualizado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Public Sub Random()
    Dim miValor As Integer
    Dim Límite_Superior As Integer, límite_inferior As Integer
    Dim Listado As String, n As Integer, Conter As Integer
 
    Listado = " "
    n = InputBox("Ingrese la cantidad de registros a elegir al azar", "Random - n")
    Límite_Superior = InputBox("Ingrese el Límite Superior", "Random - Límite_Superior")
    límite_inferior = InputBox("Ingrese el Límite Inferior", "Random - Límite_Inferior")
    Conter = 0
 
    Do Until Conter = n
        Conter = Conter + 1
        Listado = Listado & " - " & miValor
 
        Randomize
        miValor = Int((Límite_Superior - límite_inferior) * Rnd + límite_inferior + 1)
    Loop
 
    MsgBox "Solicitaste " & n & " números elegidos al azar con un" & vbCrLf & _
           "Límite Superior = " & Límite_Superior & vbCrLf & _
           "y un Límite Inferior = " & límite_inferior & vbCrLf & _
           "Los números son: " & Listado
End Sub

Con esta modificación, el número cero no se incluirá en la lista de números aleatorios generados.

Espero que esta solución te sea útil.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar