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:
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:
- El Int redondea el número, pues Rnd() genera uno que no es integer, sino float.
- Explicación de cómo se genera el número aleatorio:
Int((número máxima - número mínimo) * Rnd + número mínimo)
Espero que les sirva ;D
Un saludo,
Martin
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:
10: rand = Int((txtA - txtDe) * Rnd + txtDe)
PD: No puedo creerme que la gente no se aclare con esta función. :xD
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:
Aqui:
Msgbox "Hola"
Goto Aqui
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:
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! :xDCita 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:
Aqui:
Msgbox "Hola"
Goto Aqui
Gracias, nunca encontré la manera de hacerlo tipo batch, pero ahora si... gracias :)
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..
.
Evita ecaresidamente usar Goto es una mala practica y de paso para otros quisas no sea entendible en tu caso seria usar
do ... while untilCita 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!¡.