Win a copy of The Java Performance Companion this week in the Performance forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Confusion in random() function

 
Shivani Prajapati
Greenhorn
Posts: 9
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 138
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,
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.
Thanks
Paras
 
Paras Jain
Ranch Hand
Posts: 138
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic