[C] Parametro con valore atteso uguale a zero
Ciao ragazzi.
Come da titolo, desideravo chiedervi come calcolare un parametro (casuale) il cui valore atteso sia uguale a zero.
Probabilmente sarà una domanda banale, ma al momento non mi viene nulla in mente, se non utilizzare rand() in un intervallo ben definito.
Ho provato a svolgere in questo modo:
Qualora volessi considerare l'intervallo [-1,+1], lo calcolerei invece con
Spero possiate aiutarmi.
Grazie
Come da titolo, desideravo chiedervi come calcolare un parametro (casuale) il cui valore atteso sia uguale a zero.
Probabilmente sarà una domanda banale, ma al momento non mi viene nulla in mente, se non utilizzare rand() in un intervallo ben definito.
Ho provato a svolgere in questo modo:
sum=0.; while(i<t){ gamma=rand()/(RAND_MAX); sum+=gamma; } mean=sum/(double)t;
Qualora volessi considerare l'intervallo [-1,+1], lo calcolerei invece con
gamma=2.*((double)(rand()/(double)RAND_MAX))-1.0;. Tuttavia, il valore atteso non risulta essere 0.

Spero possiate aiutarmi.
Grazie

Risposte
Ciao.
La seguente funzione genera un numero double tra a e b.
Ora puoi usarla per generare numeri tra -1 e 1 oppure tra -k e k.
Ognuno di questi numeri sarà casuale con valore atteso nullo. Se ne generi n, anche la loro somma sarà casuale con valore atteso nullo.
La seguente funzione genera un numero double tra a e b.
double double_casuale (double a, double b) { double x; x=(double) rand(); /*x sta tra 0 e RAND_MAX*/ x=x/RAND_MAX; /*x sta tra 0 e 1*/ x*=(b-a); /*x sta tra 0 e b-a*/ x+=a; /*x sta tra a e b*/ }
Ora puoi usarla per generare numeri tra -1 e 1 oppure tra -k e k.
Ognuno di questi numeri sarà casuale con valore atteso nullo. Se ne generi n, anche la loro somma sarà casuale con valore atteso nullo.
Ti ringrazio tantissimo, kobeilprofeta! Proverò subito ad utilizzarla 
EDIT: Mi restituisce: mean: 0.023213 var: 0.202919. Sbaglio qualcosa?
Ho inserito come a=-1 e come b=+1, ritornando x dalla funzione..

EDIT: Mi restituisce: mean: 0.023213 var: 0.202919. Sbaglio qualcosa?

Il risultato non sarà mai esattamente zero.. Dopotutto stai stimando la media a partire da un numero limitato di valori. Con l'aumentare dei valori la media dovrebbe avvicinarsi sempre di più a zero.
Il generatore di numeri casuali nel C non ha comunque caratteristiche particolarmente buone dal punto di vista statistico..
Il generatore di numeri casuali nel C non ha comunque caratteristiche particolarmente buone dal punto di vista statistico..
Posta tutto il codice.
Vi ringrazio per le risposte e per l'aiuto. Postare tutto il codice risulterebbe complicato in quanto è molto lungo.
La parte di codice che sto utilizzando è:
Con l'intervallo [-1,1] ho avuto qualche problema per via di alcuni valori negativi privi di significato
Il valore di gamma, però, risulta essere indipendente dal resto, in quanto lo sto considerando come un termine di errore la cui media sia nulla. I valori che ottengo nelle varia simulazioni mi restituiscono i seguenti valori:
Potrebbero essere 'accettabili'?
L'equazione per cui sto calcolando gamma è:
$a(t)=a(t-1)+gamma$
La parte di codice che sto utilizzando è:
gamma=double casuale(0, 0.5);
Con l'intervallo [-1,1] ho avuto qualche problema per via di alcuni valori negativi privi di significato

Il valore di gamma, però, risulta essere indipendente dal resto, in quanto lo sto considerando come un termine di errore la cui media sia nulla. I valori che ottengo nelle varia simulazioni mi restituiscono i seguenti valori:
Simulation n. 0 mean: 0.089120 var: 0.173448 Simulation n. 1 mean: 0.095981 var: 0.180343 Simulation n. 2 mean: 0.099322 var: 0.183633 Simulation n. 3 mean: 0.101221 var: 0.185073 Simulation n. 4 mean: 0.107695 var: 0.190167 Simulation n. 5 mean: 0.119018 var: 0.199608 Simulation n. 6 mean: 0.111448 var: 0.193786 Simulation n. 7 mean: 0.112169 var: 0.194510 Simulation n. 8 mean: 0.105887 var: 0.188843 Simulation n. 9 mean: 0.114680 var: 0.196293
Potrebbero essere 'accettabili'?
L'equazione per cui sto calcolando gamma è:
$a(t)=a(t-1)+gamma$
Ma la media che desideri quale è? Se hai solo numeri positivi non avrai mai una media nulla a meno di avere solo zeri. Che cosa fa la funzione casuale?
In realtà io mi aspetto di trovare "an error term with expected value of zero" (dall'articolo che sto prendendo in riferimento). Da qui la media nulla. La funzione casuale proposta da kobeilprofeta mi serve ad attribuire un valore casuale al termine di errore gamma. La variabile a(t), in questo modo, può assumere dei valori che includono una piccola percentuale di errore. E, in teoria, potrebbero(anzi, dovrebbero) generare anche dei valori di a(t) negativi. Probabilmente speravo di ottenere medie nulle, con valori casuali generati da double_casuale senza che gamma avesse sempre valore nullo ... Ma solo ora mi sono reso conto che non è realizzabile.