Sono alle prime armi con la programmazione e mi è venuta voglia di fare un programma che, presi tre punti a caso su una circonferenza(approssimata ad un poligono con 20.000 lati), mi dicesse la probabilità che il triangolo costruito con essi includa in centro della circonferenza stessa
matematicamente questo numero è 1/4, io ho provato a verificarlo per tentativi, quindi più tentativi si fanno, più l'uotput dovrebbe avvicinarsi a quel 0.25
nel mio caso l'output è sempre minore e non di poco(0.02) , capisco non siano numeri 100% casuali, ma piùè alto il numero di ripetizioni, più è impreciso il numero
Il programma è questo, vengono quasi sempre numeri tra 0.22, 0.23 o 0.24
#include <iostream>
#include <time.h>
#include <cstdlib>
#include <math.h>
#include <cmath>
#include <chrono>
#include <thread>
#include<ctime>
using namespace std;
int rand();
int main()
{
long a=0, b=0, c=0, conta=0,centro=0, ausilio=0,giri=10;
cout<<"numero di ripetizioni: ";
cin>> giri;
while (conta <= giri)
{
cout<<"Giro numero "<<conta<<"\n";
conta++;
a= (rand()%20000);
b= (rand()%20000);
c= (rand()%20000);
if (((abs(a-b))>10000)||(a<b))
{ausilio=a; a=b;b=ausilio ; } //scambio i valori di a e b
if((c>=((a+10000)%20000))&&((c<=((b+10000)%20000)))) //c deve essere compreso tra i punti diametralmente opposti di a e di b
centro+=1;
cout.precision(5);
cout<<"The probability is: "<<centro<<"/"<<conta<<" = "<<((long double)centro/conta)<<"\n\n\n";
std::this_thread::sleep_for (std::chrono::milliseconds()); //per veder scorrere più chiaramente ogni ciclo, per abilitarlo basta mettere un numero dopo milliseconds
}
cout<<"The probability that the thriangle formed by three random point on a circumference include the center is "<<((long double)centro/conta);
}
mi interessa ricevere ogni possibile consiglio...grazie