RenanHirayama / TEFE

Código usado no trabalho de TEFE
0 stars 0 forks source link

Código usado no trabalho de TEFE #1

Closed RenanHirayama closed 6 years ago

RenanHirayama commented 6 years ago

include

include

include

include

include

include

include

define MMAX 600

define NMAX 800

using namespace std;

const int Ns = 44; const int Svec[Ns] = {1,2,3,4,5,6,7,8,9,10,15,20,25,30,35,40,45,50,75,100,125,150,200,250,300,350,400,500,600,800,1000,1250,1500,2000,2500,3000,3500,4000,5000,6000,7000,8000,9000,10000};

int umapartida(int d, int r){ //Funcao que devolve um n para uma partida com dado de d faces esperando r repeticoes int n = 0, jogar = 1, Jmax = d*(r-1)+1, i, jogada; int jaObtidos[d];

for(i=0;i<d;i++){
    jaObtidos[i] = 0;
}
while(jogar==1){
    jogada = rand() % d;
    n++;
    jaObtidos[jogada]++;
    if(jaObtidos[jogada] == r) jogar = 0;
}

return n;

}

void fdprobabilidade(int array, int d, int r, int s){ //Coloca a funcao densidade de probabilidade no vetor apontado que dependa de d, r e s int i, a, jmax; jmax = d(r-1)+1; for(i=0;i<jmax;i++){ array[i]=0; } for(i=0; i< s; i++){ a = umapartida(d, r); array[a-1]++; } }

void printarrayfile(int array, int d, int r, FILE file){ //Apenas imprime o array apontado no arquivo apontado int i, jmax = d*(r-1)+1; for(i=0; i<jmax; i++){ fprintf(file, "%d\t%d\n", (i+1), array[i]); //print bin e o valor do array } fprintf(file, "\n"); }

void printarrayacumulado(int array, int d, int r, FILE file){ //Printa o array acumulado no arquivo apontado int i, j, soma, jmax = d*(r-1)+1; int acumulado[jmax]; for(i=0; i<jmax;i++){ soma = 0; for(j=i; j>=0; j--){ soma = soma + array[j]; } acumulado[i] = soma; fprintf(file, "%d\t%d\n", (i+1), acumulado[i]); //print bin e o acumulado ate posicao i } fprintf(file, "\n"); }

void printfinal(int array, int d, int r, FILE file){ //Printa o array acumulado ao lado do ja montado int i, j, soma, jmax = d*(r-1)+1; int acumulado[jmax]; for(i=0; i<jmax;i++){ soma = 0; for(j=i; j>=0; j--){ soma = soma + array[j]; } acumulado[i] = soma; fprintf(file, "%d\t%d\t%d\n", (i+1), array[i], acumulado[i]); //print bin \t original \t acumulado } fprintf(file, "\n"); }

void mediaedesvio(int array, int d, int r, int smax, FILE evolucaomedia, FILE evolucaodesvio){ //FALTA PRINT E TESTE int i, j, jmax = d(r-1)+1, soma; double media, desvpad, parcela; soma = 0; for(i=0; i<smax;i++){ array[i]=umapartida(d, r); } for(i=0; i<smax; i++){ soma = soma + array[i]; media = (double)soma / (double)(i+1); desvpad = 0; parcela = 0; for(j=i; j>=0; j--){ parcela = parcela + (( (double)array[j] - media )*((double)array[j] - media) ); } if(i!=0){ desvpad = sqrt( parcela/(double)i ); } fprintf(evolucaomedia, "%d\t%f\n", (i+1), media); fprintf(evolucaodesvio, "%d\t%f\n", (i+1), desvpad); } }

void matrizfdp(int matriz[][NMAX], int array, int d, int r, int s, int h){ //Coloca H fdps na matriz apontada int i, j, jmax = d(r-1)+1; for(i=0; i<h; i++){ fdprobabilidade(array, d, r, s); for(j=0; j<jmax;j++){ matriz[i][j] = array[j]; } } }

int main(){

//Inicializacao das variaveis com valores maximos de D, R, S e H int D, R, S, H; int i, j, Jmax, n, simulacao, histograma, resultado, soma; int umHist[NMAX]; int final[MMAX][NMAX]; int faces[]= {4, 6, 8, 10, 12, 20, 365}; double media; FILE arquivo, arquivo2;

{ //Inicializacao de semente aleatoria e matriz time_t t; srand((unsigned) time(&t)); Jmax = NMAX; H = MMAX; for(i=0; i<H; i++){ for(j=0; j<Jmax; j++){ final[i][j]=0; umHist[j]=0; } } }

{ //Histogramas da evolucao com D /* S = 1e7; R=2;

D = 4; arquivo = fopen("histograma_D4_R2_S1e7.txt", "w+"); fdprobabilidade(umHist, D, R, S); printfinal(umHist, D, R, arquivo);

D = 6; arquivo = fopen("histograma_D6_R2_S1e7.txt", "w+"); fdprobabilidade(umHist, D, R, S); printfinal(umHist, D, R, arquivo);

D = 8; arquivo = fopen("histograma_D8_R2_S1e7.txt", "w+"); fdprobabilidade(umHist, D, R, S); printfinal(umHist, D, R, arquivo);

D = 10; arquivo = fopen("histograma_D10_R2_S1e7.txt", "w+"); fdprobabilidade(umHist, D, R, S); printfinal(umHist, D, R, arquivo);

D = 12; arquivo = fopen("histograma_D12_R2_S1e7.txt", "w+"); fdprobabilidade(umHist, D, R, S); printfinal(umHist, D, R, arquivo);

D = 20; arquivo = fopen("histograma_D20_R2_S1e7.txt", "w+"); fdprobabilidade(umHist, D, R, S); printfinal(umHist, D, R, arquivo);

D = 365; arquivo = fopen("histograma_D365_R2_S1e7.txt", "w+"); fdprobabilidade(umHist, D, R, S); printfinal(umHist, D, R, arquivo); */ }

{ //Histogramas da evolucao com R /* S = 1e7; D = 6;

R = 2; arquivo = fopen("histograma_D6_R2_S1e7.txt", "w+"); fdprobabilidade(umHist, D, R, S); printfinal(umHist, D, R, arquivo);

R = 3; arquivo = fopen("histograma_D6_R3_S1e7.txt", "w+"); fdprobabilidade(umHist, D, R, S); printfinal(umHist, D, R, arquivo);

R = 5; arquivo = fopen("histograma_D6_R5_S1e7.txt", "w+"); fdprobabilidade(umHist, D, R, S); printfinal(umHist, D, R, arquivo);

R = 10; arquivo = fopen("histograma_D6_R10_S1e7.txt", "w+"); fdprobabilidade(umHist, D, R, S); printfinal(umHist, D, R, arquivo);

R = 20; arquivo = fopen("histograma_D6_R20_S1e7.txt", "w+"); fdprobabilidade(umHist, D, R, S); printfinal(umHist, D, R, arquivo); */ }

{ // Alusoes /* S = 1e7; D = 2; R = 3; //Md5 (League of Legends) arquivo = fopen("AlusaoAoLOL_histograma_D2_R3_S1e7.txt", "w+"); fdprobabilidade(umHist, D, R, S); printfinal(umHist, D, R, arquivo);

R = 4; //Md7 (Alusao final da NBA) arquivo = fopen("AlusaoANBA_histograma_D2_R4_S1e7.txt", "w+"); fdprobabilidade(umHist, D, R, S); printfinal(umHist, D, R, arquivo); */ }

{ //Evolucao media e desvio / D = 6; R = 2; S = 1e5; arquivo = fopen("evolucaomedia_D6_R2_S1e5.txt", "w+"); arquivo2 = fopen("evolucaodesvio_D6_R2_S1e5.txt", "w+"); mediaedesvio(umHist, D, R, S, arquivo, arquivo2); / }

{ //Teorema Central do Limite / D = 6; R = 2, H = 1e5; for(int k=0; k<Ns; k++){ ofstream data; S=Svec[k]; char str[80]; sprintf(str, "histmedias_S%d.dat", S); data.open(str); for(i=0; i<H; i++){ soma = 0; fdprobabilidade(umHist, D, R, S); Jmax = D(R-1)+1; for(j=0; j<Jmax; j++){ soma = soma + (j+1)umHist[j]; } media = (double)soma / (double)S; data << media << endl; } data.close(); } / }

{ // Construcao da matriz final / Jmax = D(R-1)+1; matrizfdp(final, umHist, D, R, S, H);

for(i=0; i<H; i++){ // Imprime fdp ja em porcentagem for(j=0; j<Jmax; j++){ printf("%.2f%%\t", ((double)final[i][j]/(double)S)100); } printf("\n"); } / }

printf("Pronto"); return 0; }

RenanHirayama commented 6 years ago

batatei kkkkk