Essendo che il risultato è quasi corretto, mi viene il dubbio che non sia solo un caso...

di il
6 risposte

Essendo che il risultato è quasi corretto, mi viene il dubbio che non sia solo un caso...

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

6 Risposte

Devi accedere o registrarti per scrivere nel forum
6 risposte