Visual Basic - Numero Aleatorio

Life is soft - evento anual de software empresarial
   
Vista:

Numero Aleatorio

Publicado por Jas (9 intervenciones) el 19/07/2010 16:35:05
Buenas amigos tengo la siguiente pregunta:

Tengo por ejemplo un rango de 20 números:

[2,4,25,1,9,10,39,87,43,17,21,99,12,65,11,3,78,62,19,30]

y necesito escoger aleatoriamente un número de ese rango, pero según sé la función Rnd no te deja especificar entre que rango estará el número que devuelva sino que lo toma de un rango de [0,1].

Si alguien me puede colaborar se lo agradecería.

Salu2
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

RE:Numero Aleatorio

Publicado por Antoni Masana (79 intervenciones) el 20/07/2010 07:07:04
La solucion seria esta

Num = INT ( RND * 19 ) + 1

Cuando RND Devuelva el valor minimo ( 0 ) Num valdra 1 y cuando devuelva el valor maximo ( 1 ) Num valdra 20.

algunas ejemplos:

Para RND = 0.35946 <--> Num = 7
Para RND = 0.75655 <--> Num = 15
Para RND = 0.88446 <--> Num = 17
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

RE:Numero Aleatorio

Publicado por Jas (9 intervenciones) el 20/07/2010 15:49:41
Esta bien la explicación Antoni, pero en realidad lo que buscaba es por ejemplo que en un rango de 20 diferentes números los cuales no sé cuáles serán (pues el primer número de la lista podría ser 9 y el segundo 2998 ya que el usuario es el que debería especificarlos) pueda tomar cualquiera de ellos y mostrarlo.

Sin embargo en base a esto y a la ayuda de un amigo le encontré una solución, y aquí la dejo para que los que tienen la duda la puedan ver:

1) Crear un vector de 20 posiciones en las cuales estarán contenidos los 20 números diferentes.

2) Con el Rnd sacar un número del 1 al 20 y buscar la posición en el vector correspondiente al número que me dio el Rnd.

3) Sacar el valor contenido en esa posición del vector.

Ejemplo:

Dim MiVector(20) As String 'Defino un vector de 20 posiciones
Dim numero As Integer

'Lleno el vector
MiVector(0) = "45"
MiVector(1) = "9"
MiVector(2) = "5"
MiVector(3) = "1000"
MiVector(4) = "78"
MiVector(5) = "19"
MiVector(6) = "1"
MiVector(7) = "23"
MiVector(8) = "345"
MiVector(9) = "100"
MiVector(10) = "212"
MiVector(11) = "82"
MiVector(12) = "20"
MiVector(13) = "111"
MiVector(14) = "109"
MiVector(15) = "234"
MiVector(16) = "0"
MiVector(17) = "156"
MiVector(18) = "99"
MiVector(19) = "62"

'Tomo un número aleatorio de 1 a 20
Randomize

numero = (CInt(Int((20 * Rnd()) + 1))) - 1

'Muestro el valor del vector para el indice contenido en numero
MsgBox "El número es: " & MiVector(numero)

Salu2!!
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