
    
In this program, it's necessary to use int (integer) types to choose the random
      numbers.  But we need to change these
      to float format to do
      correct division and produce proper decimal values.  If we
      tried to use float values
      for a and b,
      e.g. the original random numbers, we would get something like
      7.358 and 4.125 for a and b.  The result would be a 
      decimal value where it is impossible to guess the original
      numbers.
    
Both int and float values have their uses
      in Java.  If we need to convert from one to the other, there
      are several ways.
    
Processing
        functions :               
      int   nnn  = 
        int( fff );
        (not standard
      Java)                    
      float  fnum =  float(
        inum );
    
Type-cast
      from int to float
      :       float  fnum  = 
        (float)inum;     
                                                            
        int    nnn  =  (int) fff ;
      
Math
        class
        functions:                
        int   iii  =   (int)Math.round( fnum )
        ;    // rounds up or down appropriately
                                                            
        float  fff =  Math.floor( inum
        );          //
        floor truncates (throws away) decimal part
      
It doesn't matter which method you use to do these
      conversions.  But you DO need to make sure that you use
      the appropriate type for the operation you are performing.
    
    int b = int(random(30)+1);
    int a = int(random(b)+1);
    float d = (float)a / (float)b;
    In this program, we must use int
      values for the initial choice of random numbers.
      After that, the program uses float
      values to do the division correctly.  
    
    top = int(input("Guess top"));
    bot = int(input("Guess bottom"));
    g = (float)top / (float)bot;
    The same idea is used when inputting the user's guess, but in a
      slightly different way.
      The user's input is actually a String
      - that is, a sequence of keyboard characters. 
      Processing's
      int( ) function converts
      the String input into an int
      value.  
      Then the int values are
      converted to float before
      dividing.
    
It is NOT possible to use a cast (int) to change a String to a
      number.  
      The correct standard Java commands for String to number
      conversions are:
    
    int n = Integer.parseInt( input("Type an integer") );
    float d = Float.parseFloat( input("Type a decimal") ); 
    
The problem of guessing factors of a number is closely related to
      encryption algorithms.
      One popular encryption algorithm
      is based on choosing to very large prime numbers 
      and then multiplying them to produce a very large integer to use
      as an encryption key.
      There is only one pair of prime numbers that create the key, and
      it is very difficult
      to guess these prime numbers.  You could read
        this for a brief introduction to RSA encryption.