This week's book giveaway is in the Servlets forum.
We're giving away four copies of Murach's Java Servlets and JSP and have Joel Murach on-line!
See this thread for details.
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Confusion in random() function Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Confusion in random() function" Watch "Confusion in random() function" New topic

Confusion in random() function

Shivani Prajapati

Joined: Aug 23, 2006
Posts: 9
What will be the result of the expression ((int) (Math.random()*4))

Answer in khalid mughal book is � �expression will evaluate to one of the numbers 0,1,2 or 3.�
But how can it be possible?
Paras Jain
Ranch Hand

Joined: Feb 26, 2005
Posts: 137
As per the API random function "Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0. Returned values are chosen pseudorandomly with (approximately) uniform distribution from that range."
That means you will get something between 0 and 1(non-inclusive) like 0.1, 0.2,.03 .... 0.999. Any number within this range when multiplied by 4 wil give values between 0 to 4 like
.1*4 = .4 ,
.6*4 = 2.4 .....
.999*4 = 3.996.

Hope you got the point.

Paras Jain
SCJP 5.0
Paras Jain
Ranch Hand

Joined: Feb 26, 2005
Posts: 137
And I forgot to mention that when these numbers will be casted to (int) the values after decimal will be lost
.1*4 = .4 which becomes 0,
.6*4 = 2.4 which becomes 2.....
.999*4 = 3.996 which becomes 3
I agree. Here's the link:
subject: Confusion in random() function
Similar Threads
How do you like them apples?
Qn about boolean & operator
Constructor Expression
WA #1.....word association
How can I add error handling facilities to this code?