Números aleatorios en c
Hola! Que tal
Es la primera vez que visito este sitio y bueno tengo un pequeño problema con C.
Espero encontrar ayuda en un asunto que se me dificultó en un programa sobre AG's donde necesito generar un números aleatorios con ciertas restricciones.
Primero se tiene una variable Num_tareas ingresado por el usuario que restringe el tamaño real de los arreglos: n[MAX] y población[MAX][MAX]
Quiero generar aleatorios para asignarlos a n[], pero que no se repitan y que sean en un rango de 1 a num_tareas.
Esos valores serán asignados a población[][], de tal forma que se imprima en pantalla, por ejemplo: si se ingresa:
num_tareas=5
//se imprimirá en pantalla lo siguiente:
Cromosoma 1
[1][2][3][4][5]
Cromosoma 2
[1][2][3][5][4]
Cromosoma 3
[1][2][4][3][5]
Cromosoma 4
[1][2][4][5][3]
Cromosoma 5
[2][1][3][4][5]
Cromosoma 6
[2][3][1][4][5]
Cromosoma 7
[3][1][2][4][5]
Cromosoma 8
[3][2][1][5][4]
Cromosoma 9
[4][2][3][1][5]
Cromosoma 10
[1][2][3][4][5]
// Como vé ningún numero se repite y se hace esto 10 veces nada más
Pondré parte del código que ya tengo.
#include<stdio.h>
#define MAX 100
#define ELEM 10
void main(){
int n[MAX],poblacion[MAX][MAX], num_tareas;
scanf("%d",&num_tareas);
srand(time(NULL));
printf("POBLACION\n");
for(i=0;i<ELEM;i++){
for(j=0;j<num_tareas;j++){
n=1+rand()%num_tareas;
printf("Cromosoma %d:t",i+1);
printf("[%d]",poblacion[j]=n[j]);
}
}
getch();
}
Este código me genera aleatorios diferentes pero por desgracia se me repiten los números y no me sirve.
Agradecería su pronta respuesta. Y espero ser clara. HAsta Pronto.
Es la primera vez que visito este sitio y bueno tengo un pequeño problema con C.
Espero encontrar ayuda en un asunto que se me dificultó en un programa sobre AG's donde necesito generar un números aleatorios con ciertas restricciones.
Primero se tiene una variable Num_tareas ingresado por el usuario que restringe el tamaño real de los arreglos: n[MAX] y población[MAX][MAX]
Quiero generar aleatorios para asignarlos a n[], pero que no se repitan y que sean en un rango de 1 a num_tareas.
Esos valores serán asignados a población[][], de tal forma que se imprima en pantalla, por ejemplo: si se ingresa:
num_tareas=5
//se imprimirá en pantalla lo siguiente:
Cromosoma 1
[1][2][3][4][5]
Cromosoma 2
[1][2][3][5][4]
Cromosoma 3
[1][2][4][3][5]
Cromosoma 4
[1][2][4][5][3]
Cromosoma 5
[2][1][3][4][5]
Cromosoma 6
[2][3][1][4][5]
Cromosoma 7
[3][1][2][4][5]
Cromosoma 8
[3][2][1][5][4]
Cromosoma 9
[4][2][3][1][5]
Cromosoma 10
[1][2][3][4][5]
// Como vé ningún numero se repite y se hace esto 10 veces nada más
Pondré parte del código que ya tengo.
#include<stdio.h>
#define MAX 100
#define ELEM 10
void main(){
int n[MAX],poblacion[MAX][MAX], num_tareas;
scanf("%d",&num_tareas);
srand(time(NULL));
printf("POBLACION\n");
for(i=0;i<ELEM;i++){
for(j=0;j<num_tareas;j++){
n=1+rand()%num_tareas;
printf("Cromosoma %d:t",i+1);
printf("[%d]",poblacion[j]=n[j]);
}
}
getch();
}
Este código me genera aleatorios diferentes pero por desgracia se me repiten los números y no me sirve.
Agradecería su pronta respuesta. Y espero ser clara. HAsta Pronto.
1 respuesta
Respuesta de kip289
1