Generare valori diversi ad ogni chiamata di funzione

di il
1 risposte

Generare valori diversi ad ogni chiamata di funzione

Ciao! Devo scrivere una funzione in C che genera una sequenza di M valori tra 0 e 1 e conta il numero di volte che è stato generato 1.
void funzione(int p[], int M)  
  {
	int i, val;
	int somma=0;
	srand(time(NULL));
	for(i=0;i<M;i++) {
		val=rand()%2;
		somma=somma+val;
	}
	write(p[WRITE],&somma,sizeof(int);
    	exit(0);
  }
Una volta contate le occorrenze di 1 si scrive il risultato su una pipe. Nel main vengono definiti due processi diversi che chiamano questa funzione e poi il main dovrà determinare quello che ha contato più 1. Il problema è che tutti e due processi contano sempre lo stesso numero di 1. Come faccio a fare in modo che ad ogni chiamata di funzione cambia il numero di 1 generati?
Grazie!

1 Risposte

  • Re: Generare valori diversi ad ogni chiamata di funzione

    Mancando una parte del codice ho dovuto spolverare la sfera di cristallo.Non so se funzioni ancora ma lei prevede che tu avvii i due processi e a loro volta richiamano la "funzione()".
    Il problema nasce che la funzione srand () imposti il seme per la generazione dei numeri pseudo casuali con l ora del sistema locale usando la funzione time().
    Il problema nasce dal fatto che time lavora in risoluzione dei secondi e quindi tutte le inizializzazioni nello stesso secondo restituiranno lo stesso set di numeri casuali.
    Se si vogliono utilizzare quelle funzioni l unica maniera è impostare una pausa di almeno un secondo tra l avvio di un processo ed un altro.

    Quello che non mi spiego è che ti avevo già risposto nell altro thread dove non ti sei più fatto vivo, spero di non rispondere un altra volta inutilmente.
Devi accedere o registrarti per scrivere nel forum
1 risposte