#include <stdio.h>
#include <math.h>
#include <stdlib.h>

#define NPONT  20000     /* numero de pontos  */
 /* numero aleatorio entre 0 e 1 */          
#define frand() (double)rand()/(RAND_MAX+1.)  /* excluindo valor 1 */ 
                                      
double randu(int *semente) {
  int prod=65539*(*semente);
  int m = pow(2,31);
  *semente = prod%m;
  return (double) *semente/pow(2.0,31);
}

int main(){
  double randu(int *semente);
  FILE *sRandu, *sFrand;   /* arquivos de saida */ 
  int semente = 300;       /* semente para o randu */
  int i;
  double x, y, z;

 /* abre os arquivos de saida */
  sRandu = fopen("sRandu.dat","w");
  sFrand = fopen("sFrand.dat","w");
  
/*  gere x, y, z para os dois geradores */
  for (i=0; i<NPONT; i++){
   /* randu */   
     x = randu(&semente);
     y = randu(&semente);
     z = randu(&semente);
    /* escreva arquivo pra randu */
    fprintf(sRandu,"%f %f %f\n",x,y,z);

    /* frand */
     x = frand();
     y = frand();
     z = frand();
    /* escreva arquivo pra frand */
    fprintf(sFrand,"%f %f %f\n",x,y,z);    
  }

   /* fecha os arquivos de saidas */
    fclose(sRandu);
    fclose(sFrand);
  return 0;
}
