Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema al generar dos matrices aleatorias

Estas en el tema de Problema al generar dos matrices aleatorias en el foro de C/C++ en Foros del Web. mi programa en c consiste en generar dos matrices aleatorias (con la funcion genVector ) y completamente distintas entre si. Pero en mi caso, ambas ...
  #1 (permalink)  
Antiguo 30/07/2016, 07:55
 
Fecha de Ingreso: febrero-2014
Mensajes: 60
Antigüedad: 10 años, 2 meses
Puntos: 0
Problema al generar dos matrices aleatorias

mi programa en c consiste en generar dos matrices aleatorias (con la funcion genVector) y completamente distintas entre si. Pero en mi caso, ambas matrices me salen igual. Alguien podria explicarme por que sucede esto??

Les paso codigo


Código C:
Ver original
  1. //Bibliotecas
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5.  
  6. //Modulos
  7. void genVector(int vec[3][3]);
  8.  
  9. //Funcion principal
  10. int main(){
  11.    
  12.     //declaracion de variables
  13.     ///////////
  14.     //matriz de 3 filas y 3 columnas
  15.     int vec1[3][3];
  16.     //Generamos la matriz
  17.     genVector(vec1);
  18.     //otra matriz de 3 filas y 3 columnas
  19.     int vec2[3][3];
  20.     //Generamos la matriz
  21.     genVector(vec2);
  22.    
  23.     printf("Matriz 1:\n");
  24.    
  25.     int i;
  26.     int j;
  27.    
  28.     for(i = 0; i < 3; i++){
  29.         printf("\n");
  30.         for(j = 0; j < 3; j++){
  31.        
  32.             printf("%i - ", vec1[i][j]);   
  33.        
  34.         }
  35.            
  36.     }
  37.    
  38.     printf("\n\nMatriz 2:\n");
  39.    
  40.     for(i = 0; i < 3; i++){
  41.         printf("\n");
  42.         for(j = 0; j < 3; j++){
  43.        
  44.             printf("%i - ", vec2[j][i]);   
  45.        
  46.         }
  47.            
  48.     }
  49.    
  50. }
  51.  
  52.  
  53. void genVector(int vec[3][3]){
  54.    
  55.     /* Inicializamos un generador de numeros aleatorios */
  56.    srand(time(NULL));
  57.    int i;
  58.    int j;
  59.    
  60.     for(i = 0; i < 3; i++){
  61.        
  62.         for(j = 0; j < 3; j++){
  63.        
  64.             vec[i][j] = rand() % 10;   
  65.        
  66.         }  
  67.     }  
  68.        
  69. }
  #2 (permalink)  
Antiguo 31/07/2016, 03:20
Avatar de jc_moj  
Fecha de Ingreso: septiembre-2009
Ubicación: Andalucía
Mensajes: 137
Antigüedad: 14 años, 7 meses
Puntos: 12
Respuesta: Problema al generar dos matrices aleatorias

Hola

Pues he probado el código y siempre me ha dado resultados diferentes. De todas formas creo que lo correcto sería sacar el srand de la función y ponerlo al principio del main, así se inicializa la secuencia de números aleatorios una sola vez.

Un saludo
  #3 (permalink)  
Antiguo 31/07/2016, 03:25
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Problema al generar dos matrices aleatorias

srand(time(NULL)); debe ser llamada una sola vez al principio de main:
Código C:
Ver original
  1. //Bibliotecas
  2.     #include <stdio.h>
  3.     #include <stdlib.h>
  4.     #include <time.h>
  5.      
  6.     //Modulos
  7.     void genVector(int vec[3][3]);
  8.      
  9.     //Funcion principal
  10.     int main(){
  11.         srand(time(NULL));
  12.         //declaracion de variables
  13.         ///////////
  14.         //matriz de 3 filas y 3 columnas
  15.         int vec1[3][3];
  16.         //Generamos la matriz
  17.         genVector(vec1);
  18.         //otra matriz de 3 filas y 3 columnas
  19.         int vec2[3][3];
  20.         //Generamos la matriz
  21.         genVector(vec2);
  22.        
  23.         printf("Matriz 1:\n");
  24.        
  25.         int i;
  26.         int j;
  27.        
  28.         for(i = 0; i < 3; i++){
  29.             printf("\n");
  30.             for(j = 0; j < 3; j++){
  31.            
  32.                 printf("%i - ", vec1[i][j]);    
  33.            
  34.             }
  35.                
  36.         }
  37.        
  38.         printf("\n\nMatriz 2:\n");
  39.        
  40.         for(i = 0; i < 3; i++){
  41.             printf("\n");
  42.             for(j = 0; j < 3; j++){
  43.            
  44.                 printf("%i - ", vec2[j][i]);    
  45.            
  46.             }
  47.                
  48.         }
  49.        
  50.     }
  51.      
  52.      
  53.     void genVector(int vec[3][3]){
  54.  
  55.        int i;
  56.        int j;
  57.        
  58.         for(i = 0; i < 3; i++){
  59.            
  60.             for(j = 0; j < 3; j++){
  61.            
  62.                 vec[i][j] = rand() % 10;    
  63.            
  64.             }  
  65.         }  
  66.  
  67.     }

Etiquetas: int, matrices, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:44.