LCG Algorithm
LCG Algorithm
Faculty of Engineering
Computers and Systems Department
Linear Congruential
Generator
o The code
#include "stdafx.h"
#include "iostream"
#include <fstream>
#define a 21
#define m 1000
#define c 71
#define N 10
double alpha05[11]={0,3.84,5.99,7.81,9.49,11.07,12.53,14.07,15.51,16.93,20.48};
using namespace std;
void generator (int seed,int * rn)
{
int i=0;
do
{
rn[i]=((a*seed)+c)% m;
seed=rn[i++];
}
while(i<100);
}
int _tmain(int argc, _TCHAR* argv[])
{
int o[10]={0};
int seed=1;
int r[100];
float arr[100];
double chi=0.0;
generator(seed,r);
ofstream out2("out2.txt");
for(int i=0;i<100;i++)
{
arr[i]=((float)r[i]/1000);
if ((arr[i]>0.0)&&(arr[i]<0.1))
{
o[0]++;
}
else if ((arr[i]>0.1)&&(arr[i]<0.2))
{
o[1]++;
}
else if ((arr[i]>0.2)&&(arr[i]<0.3))
{
o[2]++;
}
else if ((arr[i]>0.3)&&(arr[i]<0.4))
{
o[3]++;
}
else if ((arr[i]>0.4)&&(arr[i]<0.5))
{
o[4]++;
}
else if ((arr[i]>0.5)&&(arr[i]<0.6))
{
o[5]++;
}
else if ((arr[i]>0.6)&&(arr[i]<0.7))
{
o[6]++;
}
else if ((arr[i]>0.7)&&(arr[i]<0.8))
{
o[7]++;
}
else if ((arr[i]>0.8)&&(arr[i]<0.9))
{
o[8]++;
}
else
{
o[9]++;
}
}
int E=10;
for(int t=0;t<100;t++)
{
out2<<arr[t]<<" ";
}
for(int p=0;p<10;p++)
{
printf(" observation for class %d = %d\n",p,o[p]);
}
for(int w=0;w<10;w++)
{
chi+=(((o[w]-E)*(o[w]-E))/(float)E);
}
if(chi < alpha05[N-1])
{
cout<<"\nTEST SUCCEED\n";
cout<<"\nthese Random Numbers are low correlated"<<endl;
}
else
{
cout<<"\nTEST FAILED\n";
cout<<"\nthese Random Numbers are correlated"<<endl;
}
system("pause");
return 0;
}