Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <random>
- bool left(double x1, double y1, double x2, double y2, double x, double y){
- double vx,vy,wx,wy;
- vx = x2-x1; vy = y2-y1;
- wx = x-x1; wy = y-y1;
- return (vx*wy-wx*vy)>0;
- }
- bool insidetriangle(double x1, double y1, double x2, double y2, double x3, double y3, double x, double y){
- return (left(x1,y1,x2,y2,x,y) && left(x2,y2,x3,y3,x,y) && left(x3,y3,x1,y1,x,y)) ||
- (!left(x1,y1,x2,y2,x,y) && !left(x2,y2,x3,y3,x,y) && !left(x3,y3,x1,y1,x,y));
- }
- int main() {
- std::random_device rd;
- std::mt19937 gen(rd());
- std::uniform_real_distribution<> dis(0, 1);
- double random_number = dis(gen);
- int K = 0;
- int N = 10000000;
- for (int i = 0; i < N ; ++i) {
- double x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6;
- x1 = dis(gen);
- x2 = dis(gen);
- x3 = dis(gen);
- x4 = dis(gen);
- x5 = dis(gen);
- x6 = dis(gen);
- y1 = dis(gen);
- y2 = dis(gen);
- y3 = dis(gen);
- y4 = dis(gen);
- y5 = dis(gen);
- y6 = dis(gen);
- if (insidetriangle(x1,y1,x2,y2,x3,y3,x4,y4) &&
- insidetriangle(x1,y1,x2,y2,x3,y3,x5,y5) &&
- insidetriangle(x1,y1,x2,y2,x3,y3,y6,y6))
- K++;
- }
- std::cout << (K*1.0)/(N*1.0) << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement