Foro de elhacker.net

Programación => 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
  1. Private Function RandomNumBetween(ByVal LowerLimit As Long, ByVal UpperLimit As Long) As Long
  2.  Randomize Timer  
  3. ' This function returns a pseudo-random number between
  4.  ' the specified limits (inclusive).
  5.  RandomNumBetween = Rnd * (UpperLimit - LowerLimit) + LowerLimit
  6. End Function


Título: Re: Hacer valores aleatorios sin Select Case
Publicado por: BlackZeroX en 14 Noviembre 2011, 00:23 am
.
Código
  1.  
  2. Private Sub Form_Load()
  3. Dim i As Integer
  4.    For i = 0 To 99
  5.        Debug.Print numRandom(1, 3)
  6.    Next
  7. End Sub
  8.  
  9. Private Sub lSwap(ByRef l1 As Long, ByRef l2 As Long)
  10. '   //  Intercambia el contenido de las variables.
  11.    l2 = l2 Xor l1
  12.    l1 = l1 Xor l2
  13.    l2 = l2 Xor l1
  14. End Sub
  15.  
  16. Private Function fixNumbers(ByRef lMin As Long, ByRef lMax As Long) As Boolean
  17. '   //  Corrige los valores dados.
  18.    If lMax < lMin Then
  19.        Call lSwap(lMin, lMax)
  20.        fixNumbers = True
  21.    End If
  22. End Function
  23.  
  24. Private Function numRandom(ByVal lMin As Long, ByVal lMax As Long) As Long
  25. '   //  Genera un Numero aleatorio de acuerdo a un rango dado.
  26.    Call fixNumbers(lMin, lMax)
  27.    Call Randomize
  28.    numRandom = (lMin - lMax) * Rnd + lMax
  29. End Function
  30.  
  31.  

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
  1. 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

Citar
Timer 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
blackzero, acostumbrate a poner
Código
  1. 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
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!¡.