Responsive image Boda Szilárd weblapja

Megoldott Laborfeladat:
Buffon féle tűprobléma.
Ha egy "l" hosszúságú tűt nagyon sokszor egy padlóra ejtünk, ahol a padlódeszkék egymással párhuzamosak, s "d" szélességűek, annak a valószínűsége, hogy a tű kilóg egy padlódeszkáról:
p = 2/PI * l/d,
ahonnan PI= 2*l/d*p. Írjunk egy programot, amely elvégzi ezt a kísérletet, s kiírja a pi értékét. A "kísérlet" elvégzéséhez használjuk a rand() függvényt!

Megoldás:

#include <iostream>

#include <stdlib.h>

#include <math.h>


using namespace std;

//tavolsag, hossz deklaralasa

#define d 36

#define l 35

//ismetlesek szama

#define lesz 100000

int main(){

    float y = 0;

    float fok = 0;

    float v = 0;

    float kesz = 0; //Kedvezo esetek szama

    srand(0);

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

        //kezdeti helyzet veletlenszeru kiosztasa

        y = rand() % d;

        //fok veletlenszeru kiszotasa

        fok = ((rand() % 360) * 3.14159265358979323846) / 180;

        //tu vegenek a megtalalasa

        v = y + l * cos(fok);

        // ha a tu vege kilog, akkor a kedvezo esetek szamat noveljuk 1 el

        if ((v >= d) || (v <= 0)){
kesz++;
        }

    }



    cout << "Pi = " << ((2 * l)/(d *(kesz /lesz))) << endl;

    return 0;

}