programming forums Java Java JSRs Mobile Certification Databases Caching Books Engineering OS Languages Frameworks Products This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
Sheriffs:
Saloon Keepers:
Bartenders:

# How a generate a Random number and trim it to one or two digits.

Bobby Sharma
Ranch Hand
Posts: 598
3

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.

Stuart A. Burkett
Ranch Hand
Posts: 679
• 2

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.

Winston Gutkowski
Bartender
Posts: 10573
65
• 1
Stuart A. Burkett wrote:
will give you a random number between 1 and 15.

@Bobby: And possibly an even better way is:unless, of course, you're obliged to use the methods provided.

Winston

 Corrected after Rob's spot-on post.

Rob Spoor
Sheriff
Posts: 21094
85
• 2
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.

Rob Spoor
Sheriff
Posts: 21094
85
• 2
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
Posts: 679
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.

I refer you to Fred's signature

Campbell Ritchie
Marshal
Posts: 55772
163
Rob is correct, as long as the left operand for the remainder operator is not negative.

fred rosenberger
lowercase baba
Bartender
Posts: 12542
48
Stuart A. Burkett wrote:
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.

I refer you to Fred's signature

I have been known to change my .sig on occasion. but currently, it says this:

There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors

Bobby Sharma
Ranch Hand
Posts: 598
3
thank you all. You helped me a lot.

 With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.