PDA

View Full Version : Help:l'esame incombe e il programma su root non funziona


robertop
28-02-2006, 23:45
Sono abbastanza disperato perche non riesco a trovare l'errore del programma che ho fatto.

Il programma genera numeri casuali con una distribuzione arbitraria e il root dovrebbe visualizzare l'istogramma che tale distribuzione assume approssimando la funzione(nel caso x*x).

Il problema è che non visualizza l'istogramma come dovrebbe, sembra che scriva solo il primo intervallo.
Se qualcuno può darmi una mano gli sarò molto grato
Grazie.
Robertop

Questo è il programma:

#include <stdlib.h> //Comprende la funzione per i numeri casuali
#include <TH1D.h> //Comprende le istruzioni per l'istogramma uno-dimensionale
#include <math.h> //Comprende le funzioni matematiche in generale

#define X_MAX 1 //Massima X dell'istogramma
#define X_MIN 0 //Minima X dell'istogramma
#define Y_MAX 100 //Massima Y dell'istogramma, l'Y minima è 0
#define N_CONT 10 //Numero di divisioni dell'istogramma
#define N_MAX 1000 //Numero di numeri casuali generati

double F(double x){ //Funzione densità di probabilità
return x*x;
}

double random(double min,double max){ //Genera numeri casuali compresi fra min e max
return min+(max-min)*(rand()/(RAND_MAX+1.0));
}

TH1D *distribuzione; //puntatore all'istogramma

int Es10(){
//Alloca l'istogramma
distribuzione=new TH1D("distribuzione","Numeri casuali con distribuzione definita",N_CONT,X_MIN,X_MAX);
//Genera i numeri
for(int i=0;i<N_MAX;i++){
double x;
x=random(X_MIN,X_MAX); //Genera un numero compreso tra X_MIN e X_MAX
if(random(0,Y_MAX) < F(x)) distribuzione->Fill(x); // Si manda il numero all'istogramma
}
distribuzione->DrawCopy(); //Disegna l'istogramma
return 0;
}

robertop
01-03-2006, 10:05
up......

robertop
01-03-2006, 10:42
se c'è qualcuno che sa usare il root probabilmente può aiutarmi...
Grazie