Random Numbers in java

This little program illustrates techniques for working with random numbers in Java. The program consists of a class called RandomNumbersDemo.

To create the tutorial in NetBeans, create an empty project and add a class called RandomNumbersDemo, then paste in the code below.

/**
 * Random Numbers in Java
 * nicomp
 * Graphical Network Programming
 *
 * Concepts: "seed", pseudo-random, simulation
 */

package randomnumbers;
import java.util.Random;        // The Random numnber generator class

/**
 * Random numbers are a useful tool for simulations and also for testing.
 * We don't want the numbers to be too random: the sequences must be reproducable.
 * http://docs.rinet.ru/JavDev/ch34.htm
 * @author Nicholson.Bill
 */
public class RandomNumbersDemo {
    static final int numberCount = 1000000;

    static void RunDemo() {
        int i; long sum;
        System.out.println("RandomNumbersDemo.Demo():");

//      Each instance of the Random class is a random number generator.
//      Numbers are uniformly distributed over the range of java integers.
        Random myRandom = new Random(); // Don't override the seed.

        System.out.println("10 random numbers");
        for (i = 0; i < 10; i++) {
            System.out.println(myRandom.nextInt());
        }
        sum = 0;
        for (i = 0; i < numberCount; i++) {
            sum += myRandom.nextInt();
        }
        System.out.println("The average of " + numberCount + " random numbers is " +  sum / numberCount);

//      ========================================================================
//      = Declare and instantiate a random number object with a specific seed.
//      = The seed provides us with repeatability.
//      ========================================================================
        Random myRandomWithSeed = new Random();
        int j;
        System.out.println("Calculating the averages from 10 random number sequences that start with the same seed.");
        for (j = 0; j < 10; j++) {
            sum = 0;
            myRandomWithSeed = new Random(42);
//          myRandomWithSeed.setSeed(42);   // Reset the generator to a known state.
            for (i = 0; i < numberCount; i++) {
                sum += myRandomWithSeed.nextInt();
            }
//          This calculated average should *never* change. Why?
            System.out.println("The average of " + numberCount + " random numbers is " +  sum / numberCount);
        }

//      Floating point numbers can also be generated.
        float floatingPointSum = 0, max = 0, min = 1, num;
        for (i = 0; i < numberCount; i++) {
            num = myRandom.nextFloat();
            if (max < num) max = num;
            if (min > num) min = num;
            floatingPointSum += num;
        }
        
//      We can also pass an upper limit to the generate method in the random class
//       to obtain a number in a specific range.
//      The range for this example is between 0 and 41, inclusive.
        myRandom.nextInt(42);   // Upper limit is 42 - 1

//      The floating point range is zero 0 to almost 1. That's very useful. Why?
        System.out.println("The average of " + numberCount + " floating point random numbers is " +  floatingPointSum / numberCount);
        System.out.println("The max is " + max );
        System.out.println("The min is " + min );


//      Just out of curiousity, let's see if we ever get a 1. Does it go as high as 1?
        System.out.println("Looking for a randomly generated floatig point 1.0 ...");
        float counter = 0;  // a float counter?
        while (true) {
            counter++;
            if ((counter % 100000000)== 0) {
                System.out.print(".");
                counter = 0;
            }
            num = myRandom.nextFloat();
            if (num == 1.0) {System.out.println(counter + " iterations required"); break;}
        }
        System.out.println("We found a 1.");

        System.out.println("Method Finished");

    }
}


More by this Author

  • The Importance of Doing Laundry
    19

    We could nag, but this is better. It is less work for us to use the words of others to emphasize the importance of doing laundry. Besides, if you saw the way we dressed, you'd laugh your mouse off.

  • Data Hiding in Java
    12

    Data Hiding is an aspect of Object Oriented Programming (OOP) that allows developers to protect private data and hide implementation details. In this tutorial we examine basic data hiding techniques in Java.

  • Introduction to Windows Notepad
    5

    A useful text editor is an essential component of any personal computer. Every day we need to make notes, compose documents, and record vital pieces of information. We depend on our text editor. Microsoft provided...


Comments

No comments yet.

    Sign in or sign up and post using a HubPages Network account.

    0 of 8192 characters used
    Post Comment

    No HTML is allowed in comments, but URLs will be hyperlinked. Comments are not for promoting your articles or other sites.


    Click to Rate This Article
    working