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

/* this little program was originally proposed by matt osickey */
/* azrael@sage.cc.purdue.edu or osickey@centrifuge.ecn.purdue.edu */

/* if anyone can supply me with a better way to generate */
/* random percentiles in 'c' please email me             */

int percentile()
{
     double random1, random2, random3;
     int percent;
     random1=(double)(rand());
     random2=(double)(rand());
     random3=(double)(random1/random2); 
     if (random3<=1.00)
        return((int)(random3*100));
     while (random3>1.00)
     {
        random3-=1;;
     }
     percent=(int)(random3*100.00);
     return(percent);
}
void main()
{

   int percentile(), initialize, i, j, dummy, quantity, value;
static char ornamental[11][20]={"Azurite   ","Agate     ","Blue Quartz",
       	"Hematite  ", "Lapis Lazuli","Malachite  ","Obsidian   ",
        "Agate     ", "Rhodochrosite","Turquoise    ","Banded Agate"};
static char semiprecious[10][20]={"Bloodstone","Citrine   ","Jasper    ",
        "Moonstone  ", "Onyx      ","Sardonyx  ","StarRose Quartz",
        "Zircon    ", "Carnelian  ","Chalcedony"};
static char fancy[10][20]={"Amber    ","Alexandrite","Amethyst  ","Chysoberyl",
        "Coral\t", "Garnet\t","Jade\t","Jet      ","Spinel   ",
        "Tourmaline"};
static char precious[10][20]={"Aquamarine","Violet Garnet","Jade     ",
        "White Pearl", "Black Pearl","Peridot  ","Blue Spinel","Topaz    ",
        "Rose Pearl", "Spinel   "};
static char gems[10][20]={"Black Opal","Fire Opal","Opal     ",
        "O. Amethyst", "O. Topaz  ","Sapphire   ","Sapphire    ",
        "Tiny Diamond","Tiny Ruby","Tiny Emerald"};
static char jewels[10][20]={"Black Saphire","Diamond   ","Emerald   ",
        "Jacinth  ", "O. Emerald","Ruby    ","Star Ruby","Star Sapphire",
        "Lg. Sapphire","Blue Diamond"};
 
   FILE *ifp, *fopen(), *fclose();
   ifp = fopen("gems","w");
   printf("Please enter a random integer:  \n");
   scanf(" %d",&initialize);
   for (i=0;i<initialize;i++)
       dummy=rand();
   printf("Please enter the number of gems you wish to generate:  \n");
   scanf(" %d",&quantity);
   ifp = fopen("gems","a");
   for (i=0;i<quantity/3;i++)
   {
       dummy=percentile();
       if (dummy<20)
       {
          for (j=0;j<3;j++)
          {
          dummy=percentile()/10;
          value=(int)(10+((double)percentile())/10.0);
          if (j==0)
          fprintf(ifp,"%d gp %s\t",value,ornamental[dummy]);
          else 
          fprintf(ifp,"  %d gp %s\t", value,ornamental[dummy]);
          }
          fprintf(ifp,"\n");
       }
       if ((dummy<40)&&(dummy>=20))
       {
          for (j=0;j<3;j++)
          {
          dummy=percentile()/10;
          value=(int)(50+((double)percentile())/2.0);
          if (j==0)
          fprintf(ifp,"%d gp %s\t",value,semiprecious[dummy-1]);
          else
          fprintf(ifp,"  %d gp %s\t", value,semiprecious[dummy-1]);
          }
          fprintf(ifp,"\n");
       }
       if ((dummy<60)&&(dummy>=40))
       {
          for (j=0;j<3;j++)
          {
          dummy=percentile()/10;
          value=(int)(100+percentile());
          if (j==0)
          fprintf(ifp,"%d gp %s\t",value,fancy[dummy-1]);
          else
          fprintf(ifp,"  %d gp %s\t", value,fancy[dummy-1]);
          }
          fprintf(ifp,"\n");
       }
       if ((dummy<80)&&(dummy>=60))
       {
          for (j=0;j<3;j++)
          {
          dummy=percentile()/10;
          value=(int)(500+percentile()*5);
          if (j==0)
          fprintf(ifp,"%d gp %s\t",value,precious[dummy-1]);
          else
          fprintf(ifp,"  %d gp %s\t", value,precious[dummy-1]);
          }
          fprintf(ifp,"\n");
       }
       if ((dummy<95)&&(dummy>=80))
       {
          for (j=0;j<3;j++)
          {
          dummy=percentile()/10;
          value=(int)(1000+percentile()*10);
          if (j==0)
          fprintf(ifp,"%d gp %s\t",value,gems[dummy-1]);
          else
          fprintf(ifp,"  %d gp %s\t", value,gems[dummy-1]);
          }
          fprintf(ifp,"\n");
       }
       if ((dummy<100)&&(dummy>=95))
       {
          for (j=0;j<3;j++)
          {
          dummy=percentile()/10;
          value=(int)(5000+percentile()*50);
          if(j==0)
          fprintf(ifp,"%d gp %s\t",value,jewels[dummy-1]);
          else
          fprintf(ifp,"  %d gp %s\t", value,jewels[dummy-1]);
          }
          fprintf(ifp,"\n");
       }
     }
     fclose(ifp);
}
