Hacer valores aleatorios sin Select Case

Iniciado por oskoa, 13 Noviembre 2011, 23:42 PM

0 Miembros y 2 Visitantes están viendo este tema.

oskoa

Buenas noches, lo que andaba buscando es un código que me tire valores aleatoris preexistentes de forma completamente aletoria.

Cuando uso el Selectcase, los hace aleatorios, pero siempre en el mismo orden... y eso me perjudica mucho, tienen que ser completamente aleatorio. cada vez que se inicia el programa el "random" va siepmre en el mismo orden.

como haria para que siempre sea aleatorio?


  sel = Int(Rnd() * 19)

  Select Case sel
   
Case 0
txtserial.Text = "Nmero 1"
Case 1
txtserial.Text = "Nmero 2"
Case 2
txtserial.Text = "Nmero 3"
Case 3
txtserial.Text = "Nmero 4"

Con eso por ejemplo la 1ra vez tira "4 1 3 2" en ese orden de aleatorio, pero cada vez que le doy play, hce lo mismo "4 1 3 2" mi intencion es que siempre sea diferente el ordenn, ademas que sean aleatorios

Como serñia?


seba123neo

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Elemental Code

Código (vb) [Seleccionar]
Private Function RandomNumBetween(ByVal LowerLimit As Long, ByVal UpperLimit As Long) As Long
 Randomize Timer  
' This function returns a pseudo-random number between
 ' the specified limits (inclusive).
 RandomNumBetween = Rnd * (UpperLimit - LowerLimit) + LowerLimit
End Function

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

BlackZeroX

#3
.
Código (Vb) [Seleccionar]


Private Sub Form_Load()
Dim i As Integer
   For i = 0 To 99
       Debug.Print numRandom(1, 3)
   Next
End Sub

Private Sub lSwap(ByRef l1 As Long, ByRef l2 As Long)
'   //  Intercambia el contenido de las variables.
    l2 = l2 Xor l1
    l1 = l1 Xor l2
    l2 = l2 Xor l1
End Sub

Private Function fixNumbers(ByRef lMin As Long, ByRef lMax As Long) As Boolean
'   //  Corrige los valores dados.
    If lMax < lMin Then
        Call lSwap(lMin, lMax)
        fixNumbers = True
    End If
End Function

Private Function numRandom(ByVal lMin As Long, ByVal lMax As Long) As Long
'   //  Genera un Numero aleatorio de acuerdo a un rango dado.
    Call fixNumbers(lMin, lMax)
    Call Randomize
    numRandom = (lMin - lMax) * Rnd + lMax
End Function



Si quieres una clase mas completa: cRndNumbersNR

Dulces Lunas!¡.
The Dark Shadow is my passion.

Elemental Code

#4
blackzero, acostumbrate a poner
Código (vb) [Seleccionar]
Randomize Timer

Siguen siendo "pseudoaleatorios" pero como la seed timer cambia por segundo es mas dificil que sean siempre en el mismo orden.

Se entiende? :S




EDITO

CitarTimer Function

Returns a Single representing the number of seconds elapsed since midnight.

http://msdn.microsoft.com/en-us/library/Aa263387

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

BlackZeroX

#5
Cita de: Elemental Code en 14 Noviembre 2011, 17:58 PM
blackzero, acostumbrate a poner
Código (vb) [Seleccionar]
Randomize Timer

Siguen siendo "pseudoaleatorios" pero como la seed timer cambia por segundo es mas dificil que sean siempre en el mismo orden.

Se entiende? :S




EDITO

http://msdn.microsoft.com/en-us/library/Aa263387


En ningun momento es PseudoAletaorio... Nunca se repiten solo es una conjetura tuya hecha al azar sin fundamento establecido...

Si lees mas a fondo la MSDN en las funciones que realmente son nesesarias, omitiriamos momentos vergonzosos...

Randomize = Randomize timer

http://msdn.microsoft.com/en-us/library/8zedbtdt%28v=VS.80%29.aspx

Citar

This example uses the Randomize statement to initialize the random-number generator. Because the number argument has been omitted, Randomize uses the return value from the Timer function as the new seed value.


Dulces Lunas!¡.
The Dark Shadow is my passion.

Elemental Code


I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

BlackZeroX

Cita de: Elemental Code en 14 Noviembre 2011, 19:14 PM
si no meto la pata como aprendo?   :-[ :xD

leyendo? ademas de prueba y error...

P.D.: Me recuerdas a mi cuando apenas empesaba... cobein/seba123neo siempre saltaba (alguno) cuando me equivocaba.

Dulces Lunas!¡.
The Dark Shadow is my passion.