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: martin_poipon en 27 Mayo 2011, 17:27 PM

Título: [Aporte]Generador de números aleatorios en Vb6 (con mínimo y máximo)
Publicado por: martin_poipon en 27 Mayo 2011, 17:27 PM
Hola, soy nuevo en elhacker y quise aportar algo, pues vi varios temas/posts que intentaban crear números aleatorios, pero a casi nadie le salía bien  :-\ así que creé uno con mis pequeños conocimientos en Vb6 y os lo dejo, ojalá les sirva  :)

PD: Acepto cualquier crítica y/o sugerencia sobre el programa  :)

Crean un nuevo formulario (yo le puse frmGna - Generador de Números Aleatorios)

1.- Ponen 2 TextBox (el de número mínimo llamado txtDe y el de máximo txtA)

2.- Ponen un botón (cmdGenera)

3.- Ponen un label (lblRand - ahí aparecerá el numero aleatorio)




Una vez completados los pasos de arriba, seguimos:

En el código del botón cmdGenera poneis lo siguiente:
Código (vb) [Seleccionar]
Option Explicit 'Esta linea no es obligatoria, _
pero la recomiendo
Private Sub cmdGenera_Click()
Dim rand As Integer 'Declaramos la variable
10  rand = Int((txtA - txtDe) * Rnd + txtDe) 'El 10 se usara para _
el Goto, mientras que el Int((txtA - txtDe) * Rnd + txtDe) genera _
el numero aleatorio
   If
rand < txtDe.Text Then 'Si el numero generado es mayor _
a lo que debe ser, se hace de nuevo
       GoTo 10
   Else
       lblRand.Caption = rand 'Se muestra el numero aleatorio
   End If
End Sub





Si quieres descargar el proyecto, clickame (http://www.multiupload.com/VN2ACQ6PB8) (RapidShare, MegaUpload, DepositFiles, Hotfile, zShare, Uploading)
Nombre del archivo: gna_martin_poipon_para_elhacker.zip
MD5: EA3DD9A6EECD3CD65E4223BD44A02EC0




Notas:

Espero que les sirva  ;D

Un saludo,

Martin
Título: Re: [Aporte]Generador de números aleatorios en Vb6 (con mínimo y máximo)
Publicado por: skapunky en 27 Mayo 2011, 17:39 PM
Bueno, si estas empezando está bien, pero yo te recomiendo que hagas mejor la función, la idea es que hagas la misma función pero que no dependa de ningun objeto o codigo externo a la función.

Simplemente que le entres una variable a la función y retórne el número aleatorio, así tendrás una función independiente a cualquier programa y será reciclable que es lo mas importante y muy fácilmente adaptable a otros programas.

Por cierto...te has dejado los dos puntos en el 10 del goto, sería:

Código (vb) [Seleccionar]
10:  rand = Int((txtA - txtDe) * Rnd + txtDe)


PD: No puedo creerme que la gente no se aclare con esta función.  :xD
Título: Re: [Aporte]Generador de números aleatorios en Vb6 (con mínimo y máximo)
Publicado por: DarkMatrix en 27 Mayo 2011, 19:06 PM
No es necesario los dos puntos despues del 10, simplemente es una numero de linea y cuando se dice "goto 10" entonces se refiere a que valla a esa linea de nuevo...

En cambio si fuera "Goto Aqui" si tndria que espesificar:

Código ( vb) [Seleccionar]

Aqui:

Msgbox "Hola"

Goto Aqui
Título: Re: [Aporte]Generador de números aleatorios en Vb6 (con mínimo y máximo)
Publicado por: martin_poipon en 28 Mayo 2011, 16:18 PM
Cita de: skapunky en 27 Mayo 2011, 17:39 PM
Bueno, si estas empezando está bien, pero yo te recomiendo que hagas mejor la función, la idea es que hagas la misma función pero que no dependa de ningun objeto o codigo externo a la función.

Simplemente que le entres una variable a la función y retórne el número aleatorio, así tendrás una función independiente a cualquier programa y será reciclable que es lo mas importante y muy fácilmente adaptable a otros programas.

Por cierto...te has dejado los dos puntos en el 10 del goto, sería:

Código (vb) [Seleccionar]
10:  rand = Int((txtA - txtDe) * Rnd + txtDe)


PD: No puedo creerme que la gente no se aclare con esta función.  :xD

Lo siento, soy muy nuevo en esto del visual basic, acabo de empezar y por eso está así... pero que tonterías estoy diciendo... ¡ahora mismo lo arreglo! :xD
Cita de: DarkMatrix en 27 Mayo 2011, 19:06 PM
No es necesario los dos puntos despues del 10, simplemente es una numero de linea y cuando se dice "goto 10" entonces se refiere a que valla a esa linea de nuevo...

En cambio si fuera "Goto Aqui" si tndria que espesificar:

Código ( vb) [Seleccionar]

Aqui:

Msgbox "Hola"

Goto Aqui

Gracias, nunca encontré la manera de hacerlo tipo batch, pero ahora si... gracias :)
Título: Re: [Aporte]Generador de números aleatorios en Vb6 (con mínimo y máximo)
Publicado por: skapunky en 28 Mayo 2011, 17:03 PM
CitarNo es necesario los dos puntos despues del 10, simplemente es una numero de linea y cuando se dice "goto 10" entonces se refiere a que valla a esa linea de nuevo...

Pues justamente antes de avisar que faltavan los dos puntos, lo comprové ya que yo nunca uso etiquetas que sean números, y con el 10 sin los dos puntos me daba error, no se de donde sacas eso del número de línea..
Título: Re: [Aporte]Generador de números aleatorios en Vb6 (con mínimo y máximo)
Publicado por: BlackZeroX en 28 Mayo 2011, 22:33 PM
.
Evita ecaresidamente usar Goto es una mala practica y de paso para otros quisas no sea entendible en tu caso seria usar

do ... while until

Cita de: skapunky en 27 Mayo 2011, 17:39 PM
PD: No puedo creerme que la gente no se aclare con esta función.  :xD

El objetivo es hacer que se generen Números aleatorios SIN REPETIR sin perder tiempo y no saturar el procesador con bucles o bucles anidados, cosa que no es rentable con rangos de números amplios ya que la relación Tiempo-Procesador.

Este modulo de clase es mas rápida y mas optimizada que este código (este hilo) con rangos de números mas amplios, claro que tiene mas código pero es por una pequeña heuristica para saber que números generar o no generar sin usar For Next lo cual aumenta el rendimiento en relación Procesador-Tiempo pero no memoria  :¬¬.
[Src] cRndNumbersNR ( Generar números aleatorios sin repetir [Very-Fast] ) (http://foro.elhacker.net/programacion_visual_basic/src_crndnumbersnr_generar_numeros_aleatorios_sin_repetir_veryfast-t328967.0.html)

Dulces Lunas!¡.