Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: oskoa en 13 Noviembre 2011, 23:42 PM

Título: Hacer valores aleatorios sin Select Case
Publicado por: oskoa en 13 Noviembre 2011, 23:42 PM
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?

Título: Re: Hacer valores aleatorios sin Select Case
Publicado por: seba123neo en 13 Noviembre 2011, 23:44 PM
tenes que poner Randomize() arriba del Rnd()

Ejemplos para generar números aleatorios (http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/71.htm)

saludos.
Título: Re: Hacer valores aleatorios sin Select Case
Publicado por: Elemental Code en 14 Noviembre 2011, 00:01 AM
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
Título: Re: Hacer valores aleatorios sin Select Case
Publicado por: BlackZeroX en 14 Noviembre 2011, 00:23 AM
.
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 (http://infrangelux.hostei.com/index.php?option=com_content&view=article&id=31:crndnumbersnr&catid=2:catprocmanager&Itemid=3)

Dulces Lunas!¡.
Título: Re: Hacer valores aleatorios sin Select Case
Publicado por: 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

CitarTimer Function

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

http://msdn.microsoft.com/en-us/library/Aa263387
Título: Re: Hacer valores aleatorios sin Select Case
Publicado por: BlackZeroX en 14 Noviembre 2011, 18:37 PM
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!¡.
Título: Re: Hacer valores aleatorios sin Select Case
Publicado por: Elemental Code en 14 Noviembre 2011, 19:14 PM
si no meto la pata como aprendo?   :-[ :xD
Título: Re: Hacer valores aleatorios sin Select Case
Publicado por: BlackZeroX en 14 Noviembre 2011, 19:28 PM
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!¡.