Win a copy of Functional Reactive Programming this week in the Other Languages forum!

# 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: 10527
64
• 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: 20669
65
• 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: 20669
65
• 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
Sheriff
Posts: 50268
80
Rob is correct, as long as the left operand for the remainder operator is not negative.

fred rosenberger
lowercase baba
Bartender
Posts: 12202
35
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.