It's not a secret anymore!*
The moose likes Java in General and the fly likes How a generate a Random number and trim it to one or two digits. Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "How a generate a Random number and trim it to one or two digits." Watch "How a generate a Random number and trim it to one or two digits." New topic
Author

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

Bobby Sharma
Ranch Hand

Joined: Mar 18, 2008
Posts: 574
    
    1



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.


Back to Java , again.
Stuart A. Burkett
Ranch Hand

Joined: May 30, 2012
Posts: 679

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

Joined: Mar 17, 2011
Posts: 7542
    
  18

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

[Edit] Corrected after Rob's spot-on post.

Isn't it funny how there's always time and money enough to do it WRONG?
Articles by Winston can be found here
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19651
    
  18

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.


SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6
How To Ask Questions How To Answer Questions
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19651
    
  18

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
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

Joined: Oct 13, 2005
Posts: 37985
    
  22
Rob is correct, as long as the left operand for the remainder operator is not negative.
fred rosenberger
lowercase baba
Bartender

Joined: Oct 02, 2003
Posts: 11154
    
  16

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


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

Joined: Mar 18, 2008
Posts: 574
    
    1

thank you all. You helped me a lot.
 
Don't get me started about those stupid light bulbs.
 
subject: How a generate a Random number and trim it to one or two digits.
 
Similar Threads
Random Number Chooser programming exercise
Need definitions of nextInt(), abs() and some other questions
Tips for improving my code
Powerball program for school, Need to to run program 8 times.
Getting return value using Callable and Future