Witam!

Na zajęcia mam napisać liniowy mieszany generator liczb pseudolosowych. o postaci x=(a*x+c)%m..
Do tego mam przeprowadzić test Pi zgodnie ze wzorem podanym przez wykładowce.. oraz informacji podanych na wykładzie.
Jeżeli chodzi o test pi to mam losować współrzędne punktu i sprawdzac czy odległość punktu jest <= 1 od srodka okręgu.

Oto Kod programu:

#include<iostream>
#include<cstdlib>
#include<ctime>
#include<cmath>
#include<fstream>
using namespace std;

long long unsigned test[1001];
 long long unsigned m= pow(2,32);///63 c nie moze byc parzyste
 long long unsigned x;
 long long unsigned a=500000;
 long long unsigned c= 33633;
 long long unsigned S=42542; ///Zarodek

long long unsigned generator(long long unsigned x,long long unsigned a, long long unsigned c)
{
   return (a*x+c)%m;
}
double piTest(long long unsigned *test);

ofstream wyj;

int main(void)
{

    wyj.open("Wyjscie.txt",ios::app);
    if(wyj.fail())
    {
        cout<<"Nie udalo sie nawiazac polaczenia z plikiem\n";
        exit(1);
    }


    double wynik;

    cout<<"POCZATEK TESTU PI!\n";

       x=S;

            for(int i=0;i <1001;i++)
            {
                x=generator(x,a,c);
                test[i]=x;
            }

             wynik=piTest(test);
             cout<<wynik<<endl;

             if(wynik<=3.14 && wynik>=3.12)
             {
               wyj<<"A: "<<a<<" C: "<<c<<" Wynik testu: "<<wynik<<endl;
               wyntest=true;
             }

        cout<<"KONIEC TESTU!\n";

        cout<<"Uzupelniono plik wyjsciowy\n";
        cout<<"Program zostal wykonany, wcisnij dowolny klawisz: \n";
        getch();
        return 0;
}

///Funkcja przeprowadzajaca test pi;
double piTest(long long unsigned *test)
{
    unsigned ile=0;///Licznik zliczajacy ilosc pkt w kole

    ///sqrt( pow((x2-x1),2)+pow((y2-y1),2) ) - wzor na odl dwoch punktow od siebie. |AB|= sqrt( (x2-x1)^2+ (y2-y1)^2);
    ///nasz punkt bazowy to srodek okregu w pkt S=(0,0) i r=1;
    for(int i=0;i<1001;i++)
    {
        if(sqrt( pow((test[i]-0),2)+ pow(test[i+1]-0,2))<=1)ile++;
    }
    return 4.0*(double(ile)/1000); ///1000 poniewaz tablica test ma 1000 el.
}

Pytanie moje jest następujące:

Czy może mi ktoś powiedzieć jak wyznaczyć te współczynniki a oraz c, w taki sposób żeby ten generator miał szanse przejść ten test PI?
albo jeszcze lepiej wyznaczyć jakieś współczynniki, które sprawą że ten generator przejdzie test pi?..

W teście Pi chodzi o to żeby otrzymany wynik zbiegał do liczby PI albo w przybliżeniu wynosił tyle co liczba PI.

Co do wartości c,a jakie mam przypisane w kodzie, to są ostatnie wartości jakie próbowałem wpisywać na chybił trafił... ponieważ wcześniejsze wyliczone zgodnie z podanymi na wykładzie kryteriami również nie działały..