Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: kiara_luna en 28 Agosto 2011, 17:54 pm



Título: error en hallar media
Publicado por: kiara_luna en 28 Agosto 2011, 17:54 pm
hola hice un programa que calcule pi por el metodo de montecarlo, trate de hallar la media, la varianza y la desviacion de los numeros aleatorios generados, pero la media me da muy baja y la desviacion muy alta, hice un if para hallar la media a partir de los numeros mayores a 3.0 pero me sigue dando muy baja, me dijeron que para lo que quiero hacer tengo que guardar los numeros generados en un arreglo y de ahi escoger los mayores a 3.0 para hallar la media, pero la verdad nunca he trabajado con arreglos, alguien me puede explicar.. ayuda porfa.
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <conio.h>
#include <time.h>
int main()
{
   int cantidad;
   double x,y;
   int i;
   double z, contador=0;
   double pi, media, suma, varianza, desviacion;
 
   printf( "Cuantas iteracciones desea hacer: ");
     scanf("%d",&cantidad);
 
   srand(time(NULL));
   for ( contador=0; contador<cantidad; contador++)
    {
      x = (double)rand()/RAND_MAX;
      y = (double)rand()/RAND_MAX;
      z = x*x+y*y;
   
      if (z<=1)
      {
       contador++;
       cantidad++;
       pi=contador*4/cantidad;
       suma = suma + pi;     
     
       if(pi>=3.0){
   
         suma = suma + pi;
        media = suma/(double)cantidad ;
        varianza = ((suma - media)*(suma-media))/cantidad;
        desviacion = sqrt(varianza); } 
       }
      }   
     
   
      printf("La media es %lf\n", media);
     printf("la varianza vale %20.14Lf\n",varianza);
    printf("la desviacion vale %20.14Lf\n",desviacion);
   getch(); 
 
}