Título: función random Publicado por: m@o_614 en 5 Noviembre 2012, 19:35 pm Saludos
Tengo una duda con respecto a la función random Si quisiera generar numeros aleatorios del 0 al 10 por ejemplo, sería algo como rand()%11; pero que pasa cuando de esos números del 0 al 10 no quiero que se generen el 6 y el 4, por ejemplo. ¿Cómo podría hacer una excepción de algunos números? de antemano gracias Título: Re: función random Publicado por: Stakewinner00 en 5 Noviembre 2012, 19:39 pm puedes poner algo como
Código
y de ese modo puedes excluir de tu código el 6 y el 4 Título: Re: función random Publicado por: m@o_614 en 5 Noviembre 2012, 20:22 pm Mi código es el siguiente, lo que me pide es generar cinco operaciones con los signos (+,-,*,/) aleatoriamente, para eso estoy utilizando los números ASCII:
42 = * 43 = + 44 = , 45 = - 46 = . 47 = / el único problema son el 44 y el 46 Código
Título: Re: función random Publicado por: leosansan en 5 Noviembre 2012, 21:38 pm Citar Tal como tienes planteado el if sólo sería cierto en los dos casos en que debe ser falso. Además hay que tener en cuenta si el aleatorio genera un valor no válido, lo que está contemplado en el "else" y para que lo veas he puesto "OTRO", que puedes quitar una vez entiendas como funciona: Código Saludos!. Título: Re: función random Publicado por: m@o_614 en 6 Noviembre 2012, 00:45 am Saludos leosansan
una última pregunta en el else de tu código pusiste i-- ¿por qué? no entiendo para qué pusiste ese contador gracias por tu ayuda Título: Re: función random Publicado por: leosansan en 6 Noviembre 2012, 16:23 pm una última pregunta en el else de tu código pusiste i-- ¿por qué? no entiendo para qué pusiste ese contador Citar Si resulta un valor no válido -si entra en el else- habrá que descontarlo, de ahí el i--, si no tendrías menos de cinco valores, ya que se contarían también los valores no válidos Saludos!.Título: Re: función random Publicado por: rir3760 en 6 Noviembre 2012, 17:49 pm Si resulta un valor no válido -si entra en el else- habrá que descontarlo, de ahí el i--, si no tendrías menos de cinco valores, ya que se contarían también los valores no válidos En tu programa el uso de la sentencia "continue;" no es necesario ya que, si revisas con cuidado, es la ultima sentencia del bucle.Y los dos cambios al contador se pueden reducir a uno si se utiliza un bucle "while" o "do ... while", por ejemplo: Código
El problema de fondo (ignorar valores no deseados) se puede evitar simplemente almacenando los operadores en un array, la función "rand" se utiliza para generar el indice del operador a utilizar: Código
Un saludo Título: Re: función random Publicado por: leosansan en 6 Noviembre 2012, 20:18 pm En tu programa el uso de la sentencia "continue;" no es necesario ya que, si revisas con cuidado, es la ultima sentencia del bucle. Pardillo, que soy un pardillo.....Citar Y los dos cambios al contador se pueden reducir a uno si se utiliza un bucle "while" o "do ... while" Eso ya es lo clásico de un for o un while o do while, pero se agradece la observación.Citar Código Me asalta la duda, tonta supongo: ¿por qué usar size_t en lugar de int?. Saludos!. Título: Re: función random Publicado por: BatchianoISpyxolo en 6 Noviembre 2012, 21:39 pm Pues aquí un código para generar un vector de números aleatorios en un rango:
Código
rand() % x: genera un número aleatorio entre 0 y x-1 En mi caso: rand() % 21: genera números entre 0 y 20. Si a ese resultado le resto 10, pues genero números en el rango [-10,10] en Z Título: Re: función random Publicado por: rir3760 en 7 Noviembre 2012, 18:27 pm ¿por qué usar size_t en lugar de int? Primero porque ese es el tipo de la expresión "sizeof opers" y segundo porque algunos compiladores, al utilizarse en su modo mas estricto, se quejan de operaciones entre tipos con signo (el tipo "int") y sin el (el tipo "size_t").Un saludo |