Programa pra calcular a Simulação de Acontecimentos Discretos


Quando eu tive Fundamentos da Matemática Discreta II na faculdade, era muito chato calcular o tempo todo toda aquela frequência relativa e frequência acumulativa, então eu criei esse algoritmo para resolver simulações de acontecimentos randômicos.

O código está em C++:

#include <cstdlib>

#include <ctime>

#include <iostream>

using namespace std;

void leitura(int x[],int y[], int MAX){

for(int i=0;i<MAX;i++){

cout<<”Digite o primeiro dado pra “<<i+1<<”a coluna: “;

cin>>x[i];

cout<<”Digite o segundo dado pra “<<i+1<<”a coluna: “;

cin>>y[i];

}

}

int calculo(int y[], int MAX, int aux2){

aux2=0;

for(int i=0;i<MAX;i++){ // fazendo a soma dos dados de y

aux2=aux2+y[i];

}

return aux2;

}

void Faixa(int x[], int random[], float fa[], int simu, int faixa[], int MAX){

for(int i=0;i<simu;i++){

for(int j=0;j<MAX;j++){

if(random[i]<=fa[j]){

faixa[i]=x[j]; // equivalento as porcentagens (faixa) com os

dados de x

j=MAX;

}

}

}

}

void fr_fa(float fr[], float fa[], int y[], int MAX, int soma_y){

float auY[MAX]; // auxiliar pro y

for(int i=0;i<MAX;i++){ // criando a frequencia relativa

auY[i]=y[i];

fr[i]=(auY[i]/soma_y)*100;

}

fa[0]=fr[0];

for(int i=1;i<MAX;i++){ // criando a frequencia acumulativa

fa[i]=fr[i]+fa[i-1];

}

}

int main(){

int MAX,simu,aux2,soma_y; // MAX = numero de dados inseridos pelo usuario, simu = numero

de simulações, aux2 = auxiliar pra funcao “calculo”

cout<<”Digite o numero de MAX de dados a serem inseridos: “;

cin>>MAX;

cout<<”Digite o numero de simulacoes: “;

cin>>simu;

cout<<”nn*****************************”;

cout<<”**************************************nnn”;

int x[MAX],y[MAX];

int faixa[simu];

float fr[MAX],fa[MAX];

leitura(x,y,MAX);

soma_y=calculo(y,MAX,aux2);

fr_fa(fr,fa,y,MAX,soma_y);

srand((unsigned)time(0));

int random[simu];

for(int i=0;i<simu;i++){ // gerando os numeros aleatorios

random[i]=(rand()%99)+1;

}

Faixa(x,random,fa,simu,faixa,MAX);

float aux=0.0; // auxiliar pra divisao final

for(int i=0;i<simu;i++){ //soma da faixa

aux=aux+faixa[i];

}

cout<<”nnSoma dos resultados da simulacao eh “<<aux<<” !”;

cout<<”nMedia da simulacao de “<<aux/simu<<” !nn”;

system(”PAUSE”);

return 0;

}

Download: simulations.zip

Share on Facebook
Read this post in english

Deixe um comentário