C++ Bc. 25 cpp: Porovnání verzí

Z GeoWikiCZ
Bez shrnutí editace
m (+kategorie programovani, c++)
 
(Nejsou zobrazeny 3 mezilehlé verze od 2 dalších uživatelů.)
Řádek 7: Řádek 7:
  using namespace std;
  using namespace std;
   
   
  // generator pseudonahodne veliciny z intervalu <0,1)
  // generator pseudonahodnych cisel z intervalu <0,1)
   
   
  double r01()
  double r01()
Řádek 19: Řádek 19:
  bool buffon(double D, double L)
  bool buffon(double D, double L)
  {
  {
   double x = r01()*D;
   const double x = r01()*D;
   double f = r01()*M_PI;
   const double f = r01()*M_PI;
   double t = L/2*sin(f);
   const double t = L/2*sin(f);
   
   
   return (x <= t) || (D - t <= x);
   return (x <= t) || (D - t <= x);
Řádek 59: Řádek 59:
  }
  }


[ [[C plus plus Bc. 25| Zpět]] ]
[ [[C++ Bc. 25| Zpět]] ]
 
[[Kategorie:Programování]]
[[Kategorie:C++]]

Aktuální verze z 2. 9. 2006, 10:59

#include <iostream>
#include <iomanip>
#include <cmath>
#include <cstdlib>
#include <ctime>

using namespace std;

// generator pseudonahodnych cisel z intervalu <0,1)

double r01()
{
  return rand()/(RAND_MAX + 1.0) ;
}


// funkce simuluje hod jehlou delky L na soustavu rovnobezek vzdalenosti D

bool buffon(double D, double L)
{
  const double x = r01()*D;
  const double f = r01()*M_PI;
  const double t = L/2*sin(f);

  return (x <= t) || (D - t <= x);
}


int main()
{
  srand(time(0));                    // inicializace generatoru rand()

  const double D = 1.0;              // vzdalenost rovnobezek
  const double L = 0.7;              // delka jehly
  const double P = 2*L / (M_PI*D);   // teoreticka pravdepodobnost
  const int    N = 100000;           // pocet pokus v jedne davce

  double tp = 0, tc = 0;             // soucty jevu ve vsech davkach

  cout << "d = " << D << "   l = " << L << "\n\n";

  cout.setf(ios_base::fixed, ios_base::floatfield);
  cout.precision(4);
  for (int n=1; n<=10; n++)
    {
      double p = 0;
      for (int i=0; i<N; i++) 
        if ( buffon(D, L) )
          p++;                       // pocet priznivych jevu v davce

      tp += p;
      tc += N;

      cout << setw(2) << n << " : "
           << P << "  ~  "           // teoreticka hodnota pravdepodobnosti
           << p/N << "   "           // odhad z n-te davky
           << tp/tc << endl;         // odhad ze vsech davek
    }
}

[ Zpět ]