PDA

Visualizza la versione completa : Binormale c++


Blackbird85
08-02-2010, 14:35
Salve a tutti

Sono un fisico alle prime armi con c++.
Dovrei implementare un programma che mi restituisca una distribuzione di numeri che seguano una binormale ( http://automatica.ing.unibs.it/mco/ms/regressione/paragrafi_teoria/gauss_2d.html ) secondo il metodo di Von-Neumann :

1) Si genera un metodo per produrre una serie di numeri casuali compresi tra 0 e 1 con il seguente programma:

float RNG(int& seed)

{
const int a = 40692;
const int m = 2147483647; // periodo 2^31 --> rappresentazione 32 bit
const int q = m/a;
int k,r;
float rand;

r = m%a;
k = seed/q;
seed = a*(seed - k*q) - k*r;
if(seed<0){
seed =seed + m;
}
rand = (float)seed/(float)m;
return(rand);
}

int main()

{
int n;
int seed = 54321;

FILE *fp;
fp=fopen("random.dat","w+");
if (fp==NULL) { printf("impossibile");
system("PAUSE");exit(1);}

cout<<"Quanti numeri vuoi generare ?"<<endl;
cin>>n;

for(int i=0; i<n;i++){
float y = RNG(seed);

fprintf(fp," %f %f\n",x,y);
}

system("PAUSE");
return 0;
}


2) Dovrei confrontare questi numeri con la binormale g() avente valore massimo = g. Cioč dati due numeri random x e R, prodotti con il metodo precedente, se g(x)/g > R allora conservo l'evento viceversa lo scarto.

Il mio problema č che devo implementare la binormale senza usare funzioni in libreria, inoltre devo passargli sigma1, sigma2, e il coefficiente di corrrelazione lineare rho.

Grazie a tutti

Skywalker87
08-02-2010, 18:14
ciao :ciauz:

ti consiglio di spiegare cosa deve fare una funzione "binormale", in modo tale che anche chi non sia preparato in geometria/matematica ti possa dare una mano!!

:ciauz:

Alex'87
08-02-2010, 18:51
... e ti conviene anche leggere il regolamento di sezione :fagiano:

Loading