/***************************************************************************/
/* File:     random.c
/* Status:   19-apr-2002, pfk.
/*           13-okt-2009, pfk.
/* Functie:  Programma om het gebruik van een random generator te laten zien.
/*           Functie "rand" genereert willekeurige positieve gehele getallen
/*           met een maximumwaarde van "RAND_MAX".
/*           Functie "srand" geeft een "seed" om een nieuwe reeks te genereren
/*           met functie "rand".  Waarde seed=1 wordt als standaardwaarde 
/*           gebruikt als "srand" niet gebruikt wordt.
/*           Constante "RAND_MAX" en functie "rand" zijn gedefinieerd in
/*           "stdlib.h".
/***************************************************************************/

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

int main ()
{
  int    randomWaardeInt;
  double randomWaardeDouble;
  int    teller;

  // Druk de maximumwaarde van de random generator af.
  printf ("\nMaximum random waarde is   %12d\n\n", RAND_MAX);

  // Genereer random waarden en druk deze af als integer en als float met
  // een waarde in [0.0, 1.0].
  printf ("Eerste reeks met standaard seed:\n");
  for (teller=0; teller<10; teller++)
  {
    randomWaardeInt = rand();
    printf ("Gegenereerde random waarde %12d, ", randomWaardeInt);
    randomWaardeDouble = (double) randomWaardeInt / (double) RAND_MAX;
    printf ("waarde tussen 0.0 en 1.0   %8.6f\n", randomWaardeDouble);
  }

  // Geef nieuwe waarde van "seed".
  srand (11);
  printf ("\nTweede reeks met nieuwe waarde van seed:\n");

  // Genereer nieuwe reeks van random waarden en druk deze af.
  for (teller=0; teller<10; teller++)
  {
    randomWaardeInt = rand();
    printf ("Gegenereerde random waarde %12d, ", randomWaardeInt);
    randomWaardeDouble = (double) randomWaardeInt / (double) RAND_MAX;
    printf ("waarde tussen 0.0 en 1.0   %8.6f\n", randomWaardeDouble);
  }

  // Geef "standaard" waarde van "seed".
  srand (1);
  printf ("\nDerde reeks met standaard waarde van seed (identiek aan eerste reeks!):\n");

  // Genereer nieuwe reeks van random waarden en druk deze af.
  for (teller=0; teller<10; teller++)
  {
    randomWaardeInt = rand();
    printf ("Gegenereerde random waarde %12d, ", randomWaardeInt);
    randomWaardeDouble = (double) randomWaardeInt / (double) RAND_MAX;
    printf ("waarde tussen 0.0 en 1.0   %8.6f\n", randomWaardeDouble);
  }

  printf ("\n");
  return (0);
}
