Can any one help me writing code which can only creat three digit random number not two digit or one digit number? Following code creates 3 digti but also creats two and one digit number..

public class random 
{
    public static void main (String [] args) 
    {
        double n = Math.random();
        long n3 = Math.round(Math.random()*1000);
        System.out.println (n3);
    }   
}

Try changing

long n3 = Math.round(Math.random()*1000);

whith

long n3 = Math.round(Math.random()*(999 - 100) + 100);

You'll need to define a range. One way of doing that is by this:

Math.random() * (Max - Min) + Min

where Max would be the maximum three digit number, and Min the lowest three digit number, hence Max = 999 and Min = 100.

Edit:
A quick verification:

public class random 
{
    public static void main (String [] args) 
    {
        for (int i=0;i<99999999;i++){
            long n3 = Math.round(Math.random()*(999-100)+100);
            if (n3 < 100 || n3 >=1000)
                System.out.println (n3);
        }
    }   
}

Edited 3 Years Ago by Lucaci Andrew

If you want integer values from Random you should use nextInt rather than rounding a random float - see the API doc for Random to appreciate the extra stuff needed to get good random ints.

@Lucaci Andrew
Thanks this works. But why we are adding min and also subtracting min? What difference does it makes?

You're adding the min at the end, because the numbers generated are in range 0 to 899. So, if generated the number 0, adding 100 will give us the lowest three digit number, and if generating 899, adding 100 will give us the 999, meaning the maximum three digit number.

Edited 3 Years Ago by Lucaci Andrew

This question has already been answered. Start a new discussion instead.