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

    [C] vettori e numeri casuali

    Ciao a tutti!
    E' la prima volta che scrivo e mi servirebbe un aiuto con la generazione di numeri casuali in un vettore.
    Devo generare 32 vettori composti da 5 elementi i cui valori devono essere interi compresi tra 0 e 1. (Ad esempio 00001 00010 etc etc)
    Io ho scritto :

    codice:
    #include <stdio.h>
    #include <stdlib.h> 
    #include <time.h>   
    main() 
    {  
       int i,j,n, codice[5]; 
       
       for (i=0;i<32;i++) 
           {  
              for (j=0;j<5;j++)
                   {     
                       srand((unsigned)time(NULL));
                       codice[j]=rand()%2;
                       printf("%d",codice[j]);
                   } 
               
              
              printf("\n");  
            }   
    }
    ma tutto quello che ottengo è una serie di vettori che hanno o tutti 0 o tutti 1 e non riesco proprio a capire dove sto sbagliando.

    Grazie
    Luciana

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: [C] vettori e numeri casuali

    codice:
    #include <stdio.h>
    #include <stdlib.h> 
    #include <time.h>   
    
    int main() {  
        int i, j, n;
        int codice[5]; 
    
        srand((unsigned) time(NULL));
    
        for (i = 0; i < 32; i++) {  
            for (j = 0; j < 5; j++) {     
                codice[j] = rand() % 2;
                printf("%d", codice[j]);
            } 
    
            printf("\n");  
        }
    
        return 0;   
    }
    edit

    Originariamente inviato da lucianad
    ma tutto quello che ottengo è una serie di vettori che hanno o tutti 0 o tutti 1 e non riesco proprio a capire dove sto sbagliando.
    Nel codice che hai fornito hai un solo vettore che ogni volta sovrascrivi, lo sai vero? È solo del codice di test questo?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    unsigned non ci stava, ho sbagliato a scrivere..
    ma con il primo for non genero i 32 vettori che mi servono?
    come faccio a generarne uno diverso per 32 volte?

    edit: ho fatto una cavolata..mi bastava spostarlo all'inizio.. maledetta me!

    scusate!

    Luciana

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da lucianad
    unsigned non ci stava, ho sbagliato a scrivere..
    Più che altro il problema era la chiamata a srand, che serve a inizializzare il generatore di numeri pseudo-casuali. Nel tuo caso ad ogni iterazione reinizializzavi il generatore con l'istante corrente... ma una iterazione impiega pochissimo e quindi l'istante temporale (preciso al millisecondo) non cambiava, inizializzando il generatore sempre con lo stesso valore... Per questo avevi tutti 0 o tutti 1.
    Originariamente inviato da lucianad
    ma con il primo for non genero i 32 vettori che mi servono?
    come faccio a generarne uno diverso per 32 volte?
    Il vettore lo dichiari una volta sola:
    codice:
    int codice[5];
    Il primo ciclo non fa altro che scriverci sopra 32 volte e alla fine avrai solo i valori dell'ultima iterazione. Se vuoi 32 vettori di 5 elementi ciascuno ti serve una matrice:
    codice:
    int codice[32][5];
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    ups!
    non avevo visto che era stata inserita la nuova risposta!
    grazie comunque..

    sta roba mi sta facendo impazzire..

  6. #6
    il tuo problema fondamentale è tutto in questa riga:
    codice:
    codice[j] = rand() % 2;
    qualsiasi numero generato da rand() modulo 2 potrà diventare solo uno 0 o un 1.

    O elimini quel "% 2" oppure cambi quel "2" con un numero più alto.
    Administrator of NAMDesign.Net

  7. #7
    Originariamente inviato da LeaderGL


    O elimini quel "% 2" oppure cambi quel "2" con un numero più alto.
    io volevo ottenere o 0 o 1..
    risolto questo problema, se ne presenta un altro:
    quando passo un vettore ad una funzione, cosa significa l'errore

    declaration of ‘int ....’ shadows a parameter

  8. #8
    Originariamente inviato da lucianad
    io volevo ottenere o 0 o 1..
    risolto questo problema, se ne presenta un altro:
    quando passo un vettore ad una funzione, cosa significa l'errore
    codice:
    declaration of ‘int ....’ shadows a parameter
    stai dichiarando una variabile locale che nasconde un parametro... probabilmente il nome di un parametro della funzione coincide con il nome di una variabile locale.

    Certo è che se ci fosse il codice sorgente, sarebbe più semplice diagnosticare il problema, non credi?
    ;-)

  9. #9
    ciao e grazie per aver risposto.. era una curiosità su un errore che poi ho risolto..avevo dimenticato di dichiarare una variabile che poi veniva richiamata .. errori da programmazione a mezzanotte!
    scusate il disturbo !

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 © 2024 vBulletin Solutions, Inc. All rights reserved.