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.
 
When this method is first called, it creates a single new pseudorandom-number generator, exactly as if by the expression
 new java.util.Random()
 This new pseudorandom-number generator is used thereafter for
 all calls to this method and is used nowhere else.
 This method is properly synchronized to allow correct use by more than one thread. However, if many threads need to generate pseudorandom numbers at a great rate, it may reduce contention for each thread to have its own pseudorandom-number generator.
 double greater than or equal
 to  0.0 and less than  1.0.
nextDown(double), Random.nextDouble()
 @apiNote
 As the largest  double value less than  1.0
 is  Math.nextDown(1.0), a value  x in the closed range
  [x1,x2] where  x1<=x2 may be defined by the statements
 
double f = Math.random()/Math.nextDown(1.0); double x = x1*(1.0 - f) + x2*f;
Diagram: Math