Título: Generar números aleatorios sin que se repitan ... en C++ Publicado por: drawiz en 22 Febrero 2011, 00:52 am Hola, foreros!
Estoy iniciándome con este asunto de la programación y me han puesto un ejercicio en el cual me piden lo siguiente: "Hacer un programa que llene 2 arreglos unidimensionales de 10 elementos con valores aleatorios de 1 a 15. En cada arreglo no puede existir el mismo número repetido, pero si puede existir en el otro arreglo. Cuando termina de llenar los vectores debe mostrar su contenido uno a la par del otro. Luego deberá sumar los resultados en un tercer arreglo tomando el primer elemento del arreglo 1 y sumarlo con el último elemento del arreglo 2. Al finalizar la suma de los elementos debe mostrar el resultado del tercer vector." Pues bien, ya comencé a desarrollar el código para resolver este ejercicio, pero, cuando llego a la parte donde debo comprobrar si un elemento se repite en un arreglo (por el momento solamente he declarado 1 arreglo) ya no sé qué hacer para crear la recursividad que me permita saber si el elemento está o no repetido. Agradecería mucho si podéis ayudarme a resolver esto. Os dejo el código que he desarrollado hasta el momento. //Inicia el codigo #include <iostream> #include <iomanip> #include <cstdlib> #include <time.h> using namespace std; int main () { int tamanno = 10; int arreglo1[tamanno]; //declaro un arreglo de 'tamanno' elementos. int contador = 1; int aux = 0; //Voy a sembrar una 'semilla' para luego usar numeros aleatorios en //el arreglo que utilizare posteriormente. srand(time(NULL)); //Esto inicializa en '0' a los elementos del arreglo. for ( int i = 0; i < tamanno; i++ ) { arreglo1 = (rand() % 10) + 1; //Genera numeros aleatorios entre 0 y 10 } // Aqui deberia haber algo que permita crear una recursion para saber // si un elemento del arreglo esta repetido. De ser asi deberia crear // otro elemento en esa posicion, comprobar de nuevo si esta repetido // y si no lo esta entonces pasar a la siguiente posicion repetiendo // esta accion hasta que todos los numeros no esten repetidos. //Ahora voy a mostrar el encabezado de donde estara el arreglo. cout << "Elemento" << setw(13) << "Valor" << endl; cout << "Elemento" << setw(13) << "Valor" << endl; //Esta sección de codigo es la que muestra a los elementos del //arreglo. for ( int i = 0; i < tamanno; i++ ) cout << setw(7) << i << setw(13) << arreglo1 << endl; return 0; // Finaliza el codigo Título: Re: Generar números aleatorios sin que se repitan ... en C++ Publicado por: Garfield07 en 22 Febrero 2011, 01:17 am http://foro.elhacker.net/programacion_cc/generar_numeros_aleatorios_sin_repeticionc-t315014.0.html
http://foro.elhacker.net/programacion_cc/como_crear_numeros_aleatorios_sin_que_se_repitan-t268765.0.html Hay más en Códigos interesantes, post interesantes... Etc. Suerte! Título: Re: Generar números aleatorios sin que se repitan ... en C++ Publicado por: BlackZeroX en 1 Junio 2011, 04:12 am .
puedes traducir este codigo: http://foro.elhacker.net/programacion_visual_basic/src_crndnumbersnr_generar_numeros_aleatorios_sin_repetir_veryfast-t328967.0.html El algoritmo es súbitamente rápido ya que no emplea bucles en la creación de números aleatorios. Dulces Lunas!¡. . Título: Re: Generar números aleatorios sin que se repitan ... en C++ Publicado por: miri_nenyta en 26 Febrero 2016, 09:37 am NECESITO AYUDA, SOY PRINCIPIANTE EN ESTE TEMA Y NO PUEDO CON UNA TAREA, ME PIDE LO SIGUIENTE:
Diseña un programa que genere números aleatorios entre 0 y 10000 e imprima el valor del número generado, el programa se debe de ejecutar constantemente ( es decir en forma repetitiva) y se debe detener, solo cuando el numero generado se encuentre en el rango de (4000 a 6000) #include <stdio.h> #include <stdlib.h> #include <time.h> main() { int num,i; srand(time(NULL)); num=rand()%1; num=rand()%10000; printf("Numero aleatorio es: \n", num); printf("%i\n", num); HASTA AHI ME DA NUMEROS ALEATORIOS PERO NO LOGRO MAS AYUDA POR FAVOR URGEEEE Título: Re: Generar números aleatorios sin que se repitan ... en C++ Publicado por: Mecanma en 17 Octubre 2019, 07:46 am perdon por responder a algo muerto.
Código: #include <iostream> #include <stdlib.h> #include <time.h> using std::cout; using std::endl; int main(){ const int Max = 10000, Limite =10001; srand(time(NULL)); int aux; do{ aux =0 + rand()%(Limite - 0); if((aux > 4000) && (aux < 6000)){ cout<<"Ultimo: "<<aux<<endl; return 0; } else{ cout<<aux<<endl; } }while((aux < 4000) || (aux >6000)); return 0; } |