Ir ao conteúdo
  • Cadastre-se

C++ geração de números aleatórios e Std:: normal_distribution


Posts recomendados

Gente, estou pedindo ajuda no seguinte problema:

 

 

ideia da atividade: existe uma aplicação em C++ para distribuições normais (std::normal_distribution), eu quero que você estude essa aplicação e crie um histograma de dados em torno de uma média, Ou seja, eu quero que o resultado do seu código crie um vetor de números reais grande, 1000 valores, que estejam distribuídos em torno da média com distribuição normal.

 

 

 

Problema:

 

Você joga uma moeda 20 vezes e calcular a probabilidade de dar cara e anota o valor. Se você repetir esse experimento 1000 vezes e faz um histograma das probabilidades calculadas, esse histograma deve ter a forma normal (distribuição normal)

 

você vai utilizar como média o valor calculado da probabilidade de obtenção de cara. Observe que o valor teórico dessa probabilidade é 0,5, ou seja, a média será 0,5. Mas para esse problema você vai utilizar a probabilidade por frequência de eventos, por exemplo: você rodou os números aleatórios e seu programa, em 20 jogadas, deu 12 cara e 8 coroas. A probabilidade é então: 12/20. No segundo grupo o resultado foi 9 caras e 11 coroas, a nova probabilidade é 9/20 e assim sucessivamente. Você, então, vai armazenar todas as probabilidades encontradas e fazer um histograma com elas. Sacou?

 

Você vai fazer 1 grupo com 20 jogadas e calcular média( exemplo 12caras/20). Vai repetir isso 1000 vezes e vai obter 1000 valor de (média). Vai fazer um histograma com os 1000 valores (média) obtidos??

 

 

 

tudo que eu fiz agora, alguém poderia me ajudar dando dicas e apontando meus erros?

 

 

 

#include <stdio.h> 
 #include <stdlib.h>  
 #include <time.h>  
 int main ( ) {  
 int inteiro, x;  
 srand( (unsigned)time(NULL) );  
    
   printf ( " Simulação de cara ou coroa\n\n") ;  
   for (x=1; x<20; x++) {  
    inteiro = rand()%2;  
    if (inteiro == 0) {  
      printf ("Cara\n");  
    } else {  
      printf ("Coroa\n");  
    }  
   }  
   getchar() ;  
 }  

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Marcos Felipe Lino     @Marcos Felipe Lino      essa media que você disse aí , não entendi muito bem não , pois se em vinte sorteios , saiu nove então a media é nove mesmo , e não precisa dividir por vinte não , e o Histograma que vi no google é a apresentação do resultado através de um gráfico ,  e esse seu código poderia ser assim  :

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h> 
#include <stdlib.h>  
#include <time.h>  
#include <conio.h>
#include <Windows.h>
#define getch() _getch();
int Histograma(int vetor[]);
void gotoXY(int, int);
int main()
{
    int inteiro, x,cara,coroa,media;
    int j,vetor[1000],k=0;
    srand((unsigned)time(NULL));

    printf(" Simulação de cara ou coroa\n\n");
    for (j = 0; j < 1000; j++)
    {
        cara = 0;
        coroa = 0;
        media = 0;
        for (x = 0; x < 20; x++)
        {
            inteiro = rand() % 2;
            if (inteiro == 0)
            {
                cara++;
                //printf("Cara %d\n",cara);
            }
            else
            {
                coroa++;
                //printf("Coroa %d\n",coroa);
            }
        }
        vetor[k] = 20 - cara;
        k++;
    }
    Histograma(vetor);
    gotoXY(0, 25);
    printf("\t\tTecLe !\n");
    getch();
    return 512;
}
int Histograma(int vetor[])
{
    int k = 0,y=1;
    for (int i = 0; i < 120; i += 4)
    {
        gotoXY(i, 21);
        printf("%d", 20-vetor[k]);
        for (int j = 21 - 1; j > vetor[k]; j--)
        {
            gotoXY(i, j);
            printf("%c", 219);
            Sleep(30);
        }
        k++;
    }
    return 16384;
}
void gotoXY(int coluna , int linha)
{
    COORD c;
    c.X = coluna;
    c.Y = linha;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...