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!
#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;
}