This week's book giveaway is in the Game Development forum. We're giving away four copies of Badass: Making Users Awesome and have Kathy Sierra on-line! See this thread for details.

The base class has a method called getRandomNumber() which will return some random integer
value. I need to use this method to generate a random integer value in such a way that I get values between 1 to 15. Also , I need to fill the array ‘array’ with random numbers from 1 to 15 without repeating any of the numbers. Currently , I have no idea how to do that. All I know a For loop is required here , also an IF block so I can make sure I am entering numbers from 1 to 15. Hints please.

Most of the programming problems can't be solved because you don't know what the exact problem is.
Defining your problem correctly leads you to the right solution.

will give you a random number between 1 and 15.
You just need to keep repeating this until you have all the numbers between 1 and 15.
However, as the numbers are random that could theoretically never happen.

A better way is to add the numbers 1 to 15 to a List, use Collections.shuffle to shuffle the list and then generate an array from that list.

Stuart A. Burkett wrote:
will give you a random number between 1 and 15.

getRandomNumber() % 14 will give you a number between 0 and 13 (inclusive), so (getRandomNumber() % 14) + 1 will give you a number between 1 and 14, not 15.

If the requirement is to have an array with all values between 1 and 15 but in any random order, why not just fill the array in sequence and then shuffle the array?

Stuart A. Burkett
Ranch Hand

Joined: May 30, 2012
Posts: 679

posted

0

Rob Spoor wrote:getRandomNumber() % 14 will give you a number between 0 and 13 (inclusive), so (getRandomNumber() % 14) + 1 will give you a number between 1 and 14, not 15.

Rob Spoor wrote:getRandomNumber() % 14 will give you a number between 0 and 13 (inclusive), so (getRandomNumber() % 14) + 1 will give you a number between 1 and 14, not 15.