Generar un número aleatorio con determinadas restricciones
Hola! Que tal
Es la primera vez que visito este sitio y bueno tengo un pequeño problema con C.
Espero que me ayude para mi programa de la escuela... Necesito generar un numero aleatorio 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.
Es la primera vez que visito este sitio y bueno tengo un pequeño problema con C.
Espero que me ayude para mi programa de la escuela... Necesito generar un numero aleatorio 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.
1 respuesta
Respuesta de seansean
1