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

typedef  struct Path
{
  int left_node;
  int right_node;
} path;

void main ()

{
  char file[]="test.in";
  FILE *fp;
  double help;
  int i, j, circ_length, help_left, help_right, number, seed;
  path *h_field;

  printf("Please type in the length of the circuit: ");
  scanf ("%d", &circ_length);
  printf("\nPlease type in the number of subpaths to generate: ");
  scanf ("%d", &number);
  printf("\nSeed?: ");
  scanf ("%d", &seed);

  if ( (circ_length <= 0) || (number <= 0) )
    {
      printf("Wrong parameters! Exiting.\n");
      exit(0);
    }

  srand(seed);
  rand();
  h_field = (path*) malloc ( (number) * sizeof(struct Path) );
  for (i=0; i<number; i++)
    {
      help = ( (double) rand() / (RAND_MAX + 1.0) ); 
      help_left  =  ((int) ((circ_length) * help) );

      do
	{
	  help = ( (double) rand() / (RAND_MAX + 1.0) ); 
	  help_right =  ((int) ((circ_length) * help) );
	}
      while(help_right == help_left);
    
      h_field[i].left_node = help_left;
      h_field[i].right_node = help_right;

      for (j=0; j<i; j++)
	{
	  if ( (h_field[j].left_node == help_left) &&
	       (h_field[j].right_node == help_right) )
	    {
  	      i--;
	      j=i;
	    }
	}
    }
      


  fp = fopen(file,"w");

  fprintf(fp,"%d\n",circ_length);
  fprintf(fp,"%d\n",number); 

  for (i=0; i<number; i++)
    {
      fprintf(fp,"%d %d\n",h_field[i].left_node, h_field[i].right_node);
    }

  fclose(fp);
}


