aspose file tools*
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: 8016
    
  22

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: 19723
    
  20

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: 19723
    
  20

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: 39436
    
  28
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: 11422
    
  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.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: How a generate a Random number and trim it to one or two digits.