Título: ejercicio Nº1 de Visual basic Publicado por: Codename!! en 18 Julio 2004, 08:34 am hola, yo se que este ejercicio se hace kon el randomize pero nose de que manera ( y eso que pensaba que era un pijada ::) ) solo me falta un empujoncito, perdon por mi ignorancia espero que lo komprendais
Título: Re: ejercicio Nº1 de Visual basic Publicado por: soplo en 18 Julio 2004, 20:20 pm Hola
Para eso estamos je je je ¿Qué cosas necesitas? 1- Generar números aleatorios. 2- Guardar los números que vas a obtener para mostrarlos al final 3. Comprobar cada vez que obtienes un número que ese número no ha salido antes. Así que en mi opinión deberías crear una tabla donde puedan entrar esos cinco números y la inicializas con el valor -1 (es un valor imposible en la loto). Luego obtienes un número. Luego compruebas que ese número no ha salido antes recorriendo la tabla a ver si está. Si está vuelves a generar número y comprobar. Si no está lo metes en la tabla y generas el siguiente. Cuando tengas todos muestras la tabla y ya está. Para obtener números aleatorios utilizas la orden RND que devuelve un número aleatorio entre 1 y 0. Si tu quieres que te devuelva valores entre 1 y 25 tendrás que hacer '25 * RND'. Si quieres que te devuelva entre y 0 y 9 pues '98 * RND'. Estos números ademas tienen decimales así que tu debes hacer INT(RND * 98) para que obtenga números entre 0 y 98 enteros. Si quieres que salgan valores entre 1 y 99 tendrás que sumarle uno al resultado '1+int(RND * 98)' Te pongo el pseudocódigo paso por paso para que lo entiendas bien aunque es mas largo. Sería algo como esto: En pseudocódigo sería Código: ---------- Declaraciones --------------- La función de comprobar número sería Código: Function Comprobar(int Numero) La función de mostrar la tabla obtenida sería Código: Function Mostar_Tabla() Si no te sale te posteo código Un saludo :D Título: Re: ejercicio Nº1 de Visual basic Publicado por: Codename!! en 18 Julio 2004, 21:42 pm ok,gracias soplo voy a intentar hacerlo, y sino ya te kontare
Título: Re: ejercicio Nº1 de Visual basic Publicado por: Codename!! en 18 Julio 2004, 22:59 pm nada no consigo hacerlo :'( :'( :'( :'( me gustaria ver el codigo plis, y porsupuesto gracias soplo
Título: Re: ejercicio Nº1 de Visual basic Publicado por: soplo en 19 Julio 2004, 03:17 am Hola
Declaro una variable array tabla con cinco posiciones para cinco números. Al estar fuera de cualquier rutina es una variable global a nivel de formulario y será conocida en todas las rutinas de este formulario ---------- Declaraciones --------------- Código: Dim TablaNumeros(5) as integer Comienzo la rutina principal. En ella declaro las variables que necesito en esta rutina. Valido valdrá true o false según que el número sea válido o no. Contador valdrá entre 0 y cuatro y corresponde a cada uno de los cinco números que quiero obtener y meter en sus cinco labels: lblnumero(0), lblnumero(1), lblnumero(2), lblnumero(3), lblnumero(4) Numero: número aleatorio calculado Código: sub Command1_Click() Aquí inicialmente relleno la tabla con valores -1 que son imposibles. Los números calculados van desde el 1 al 99 y por tanto no es posible tener un valor -1 calculado. Código: Sub RellenarValores() Aquí muestro la tabla. Si miras el pantallazo correspondiente a este ejercicio verás que hay cinco label llamados LblNumeros. Son un array de controles. De esta forma el primer número debe ir en lblNumero(0) y el último en lblnumero(4) Código: Sub MostrarTabla Aquí compruebo si el número es válido o no. Para ello recorro la tabla y compruebo cada elemento con el número obtenido. Si ya está ahí es que el número que he calculado está repetido y por tanto debo calcular otro. En este caso la función devuelve false. En otro caso devuelve true Código: Function Comprobar(Num as integer) Un saludo Título: Re: ejercicio Nº1 de Visual basic Publicado por: ziz0u en 16 Agosto 2004, 23:10 pm Buenas, me llamo ZiZou, soy nuevo en esto de la programación y quisiera completar todos estos ejercicios antes de lanzarme con algo mas complicado.
Mis dudas sobre el primer ejercicio son: ¿Por qué hay que necesitamos justamente el número 98? Si no he entendido mal, RND es igual a un número aleatorio 0 ó 1. Pero si multiplicamos 0 ó 1 por 98, sólo puede dar 0 ó 98. Siento hacer estas preguntas que seguramente os pareceran basicas, pero agradeceria una aclaracion. Muchas gracias Título: Re: ejercicio Nº1 de Visual basic Publicado por: ziz0u en 31 Agosto 2004, 01:16 am Repase el codigo a conciencia y ya lo he entendido, gracias de todas maneras :D
Título: Re: ejercicio Nº1 de Visual basic Publicado por: bano en 31 Agosto 2004, 01:25 am RND es un numero aleatorio entre 0 y 1, no 0 o 1.
Es decir puede ser por ej, 0.5 ... Solo queria dejarlo claro ... saludosss ;) Título: Re: ejercicio Nº1 de Visual basic Publicado por: capi en 30 Diciembre 2004, 02:02 am una duda....
usando rnd me sale todo bien pero siempre al ejecutar el programa siempre salen los mismos numeros y en orden, como se podria cabiar eso?? gracias de antemano :P Título: Re: ejercicio Nº1 de Visual basic Publicado por: soplo en 5 Enero 2005, 05:44 am Hola
Eso es porque para generar los números aleatorios utiliza un algoritmo que parte de un número base. Si cambias el número base entonces cada vez parte de un número diferente para calcular el número aleatorio y por tanto la probabilidad de que se repita es muy pequeña. Para cambiar el número base utiliza la orden randomize que tiene varios argumentos. Si no le pones ninguno, utiliza el número de serie de la hora actual del sistema Un saludo Título: Solución al Ejercicio No. 1, Saludos desde Zacatecas, México Publicado por: rogersoft en 7 Enero 2005, 16:45 pm Option Explicit
Dim Numeros(0 To 5), contador, a, b, valor As Integer Dim YaEsta As Variant Private Sub Form_Load() Randomize End Sub Private Sub Crear_Click() For a = 0 To 4 Generados.Col = 0 Generados.Row = a Generados.Text = "" Next contador = 0 While contador < 5 10 b = 0 valor = Int((Rnd * 99) + 1) For a = 0 To 4 Generados.Col = 0 Generados.Row = a YaEsta = Generados.Text If valor = YaEsta Then b = 1 Next If b = 1 Then GoTo 10 Numeros(contador) = valor contador = contador + 1 Wend End Sub Private Sub Mostrar_Click() For a = 0 To 4 Generados.Col = 0 Generados.Row = a Generados.Text = Numeros(a) Next End Sub Título: Re: ejercicio Nº1 de Visual basic Publicado por: c0rrupt_gamer en 19 Abril 2005, 12:10 pm pues yo creo k la mejor forma de conseguir numeros aleatorios es el randomize timer
es decir en donde se pone el randomize, en vez de poner randomize a secas se pone "randomize timer" para k la "semilla" vaya cambiando conforme al rloj del pc, lo k no se es si cambia con los segundos o con los milisegundos pero a mi nunca se me repiten los numeros, si hay otra forma aun mejor k esta ya la notificara alguien del foro. saludos ;D Título: Re: ejercicio Nº1 de Visual basic Publicado por: soplo en 24 Abril 2005, 14:28 pm Hola
Hay dos conceptos en lo que respecta a números aleatorios. El primero es que en todos los lenguajes hay una orden para obtener un número aleatorio. En visual basic es RND y devuelve valores aleatorios entre 0 y 1. Por tanto si queremos obtener números entre 0 y 9 tendremos que multiplicarlo por nueve (RND*9) La otra cosa es que lógicamente RND devuelve un número aleatorio gracias a un algoritmo concreto que está incluído en el lenguaje. Ese algoritmo si no se le dice nada parte de un determinado número por lo que siempre que parta de ese número dará los mismos resultados. Para evitar esto se le puede decir que parta de otro valor cualquiera. La orden RANDOMIZE le dice que parta de otro valor que le indique. Si le digo por tanto RANDOMIZE TIMER le estoy diciendo que parta de el tiempo en ese instante (que será distinto de un impulso después). Un saludo Título: Re: ejercicio Nº1 de Visual basic Publicado por: c0rrupt_gamer en 24 Abril 2005, 21:35 pm Veis lo k yo decia? No tengais miedo a responder si creeis saber la respuesta, en este foro siempre hay gente tan entendida en el tema como el soplo `para corroborar o corregir las posibles respuestas que deis.
PD: Anda k no hay diferencia entre explicarlo komo yo y komo él! :o Me alegro de haber acertao porke si no me tiraba por los suelos, jejeje Saludos, y gracias a soplo por determinar bien el por k , yo antes entendia k con randomize timer se cambiaba la "semilla" pero el resto no lo tenia mu claro. Título: Re: ejercicio Nº1 de Visual basic Publicado por: rob1104 en 17 Junio 2005, 07:44 am ya resolvi el reto, a mi me funciona bien no se que les paresca a ustedes
Código: Private Sub cmdCalcular_Click() acepto sugerencias y notifiacion d error, un gran saludo Título: Re: ejercicio Nº1 de Visual basic Publicado por: firesoul76 en 14 Diciembre 2009, 16:09 pm Hoola a todos!
Quisiera ver si alguno me puede ayudar.... Estoy haciendo algo parecido a esto, solo que los números son específicos. Por ejemplo: tengo los números 33, 10, 11, 12, 13, 21, 25, 27 y 30 y quiero obtener 6 de ellos cada vez que genere el comando o la función. Gracias.... |