Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    matrice numeri casuali

    Voglio creare una matrice composta da numeri casuali, ma facendo in questo modo mi crea una matrice con numeri tutti uguali,....

    codice:
    #include <stdio.h>
    #define MAXR 3
    #define MAXC 3
    
    typedef int Matrice[MAXR][MAXC];
    
    int random(int min,int max);
    int main (int argc, const char * argv[]) 
    {
        
    	Matrice m1;
    
    	int i,j; 
    	
    	for (i=0; i<MAXR; i++) {
    		for (j=0; j<MAXC; j++) {
                m1[i][j]= random(1,10);
    			printf("%d  ", m1[i][j]);
    		}
    		printf("\n");
    	}
    	
    
     
      system("PAUSE");	
      return 0;
    }
    
    int random(int min,int max){
        srand(time(0));
        return rand()%(max-min+1)+min;
    }
    Come posso risolvere il problema?

  2. #2
    La srand va chiamata solo una volta all'inizio del programma; il tuo codice invece la chiama prima di ogni rand, reinizializzando così il generatore di numeri casuali ogni volta allo stesso valore (time(NULL) cambia solo ogni secondo!) ed ottenendo così sempre lo stesso numero.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Giusto!!
    Grazie 1000!!!

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Ho aggiunto io i tag CODE nel codice del tuo post, come richiesto dal Regolamento interno. Servono a rendere più leggibile il codice, mantenendo formattazione e carattere.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.