jQuery in Action, 3rd edition
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Math.random() !!!!!! Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Math.random() !!!!!!" Watch "Math.random() !!!!!!" New topic

Math.random() !!!!!!

sunil kathuria

Joined: Jun 06, 2001
Posts: 24
this following question is from mock exam by RHE
what is the value of the follwing expression ?
options are :-
A. 2
B. 3
C. It is impossible to say
the answer is b ie. ->3
my question is that when Math.random() method generate
a random no. say 0.99999 on addition with 2.50001 it
becomes 3.50 and after rounding the result will give
4 which is not in the option list . so what is the
right answer
please tell me the right answer
thanks in advn.
sandip karmarkar

Joined: Jan 08, 2001
Posts: 26
Yes I also think that answer should be C and not b.
Mihai T

Joined: Jun 25, 2001
Posts: 4
You are right: the expression could be evaluated to 3 or 4. The answer b (i.e. 3) is wrong.
Try this two or three times:

public class Z {
public static void main(String[] args) {
int j = 0;
for (int i = 0; i < 10000;i++) {
j = (int)Math.round(Math.random() + 2.50001);
if (j != 3) System.out.println("i = " + i + " j = " + j);

Mihai T.

[This message has been edited by Mihai T (edited June 25, 2001).]
V Srinivasan
Ranch Hand

Joined: Aug 16, 2000
Posts: 99
Hi Sunil, sandip & Mihai,
The result is just because of Math.round. Math.round method always casts to either int or long and returns.
What JLS says about Math.round :
The result is rounded to an integer by adding 1/2, taking the floor of the result, and casting the result to type int.
In other words, the result is equal to the value of the expression:
(int)Math.floor(a + 0.5f) or (long)Math.floor(a + 0.5d)
Hope this helps.
Thanks and regards
Manfred Leonhardt
Ranch Hand

Joined: Jan 09, 2001
Posts: 1492
Hi Sunil,
As you have mentioned, the book answer is incorrect. The correct answer is C. It has been corrected in other printings. When you buy a book, always look for the Errata on-line because all books have errors!
Find the errata here for RHE book.
Errata for Complete Java� 2 Certification Study Guide
V Srinivasan
Ranch Hand

Joined: Aug 16, 2000
Posts: 99
Sorry friends,
I am wrong.
I agree. Here's the link: http://aspose.com/file-tools
subject: Math.random() !!!!!!
It's not a secret anymore!