Generator liczb pseudolosowych


#include <stdlib.h> /* standart library */
#include <stdio.h> /* standart input output */
#include <math.h> /* math's functions - like power */

void   StartRandom();
double Random();

static double x1, x2, x3;


int main ()
 {
 unsigned long i;
 double t, x;

 printf("\n\n\n\n\n\n\n\n\n\n");

 StartRandom();
 /* first to check */
 t = Random();

 /* searching first repeat */
 for(i=0 ; i < 1000000000; i++)

	{
	x = Random();
	if (x == t)
	 {printf("Powtorka : %ld ",i); exit(1);}
	if (!(i%1000000))
	 {
	 printf("\b\b\b\b\b\b\b\b\b%.7ld ",i);
	 }
	}

 getchar();
 return 0;
 }
/* ***************************************** */
/* gives random nuber from <0,1) range */
/* ***************************************** */
double Random ()
 {
 double res = (x1 * 23.0) + (x2 * 268435451.0) + (x3 * 2333333.0);

 res = fmod(res,268435455.0);
 x1 = x2;
 x2 = x3;
 x3 = res;
 res /= 268435455.0;
 return res;
 }
/* ***************************************** */
/* random initializing */
/* ***************************************** */
void StartRandom ()
 {
 int i;

 /* initialazing seed also can get some rand from time & date */

 x1 = pow(2,3) - 1;
 x2 = pow(2,11) - 1;
 x3 = pow(2,17) - 1;

 /* to get stady numbers */
 for(i = 0; i <  2000; i++) Random();
 }

2012.11.22 22:29:08.