黑马程序员技术交流社区

标题: 关于Math的问题 [打印本页]

作者: 刘佳    时间: 2012-9-5 15:52
标题: 关于Math的问题
本帖最后由 刘佳 于 2012-9-5 19:36 编辑

class MathDemo
{
public static void main(String[] args)
{
  for (int x = 0; x<10; x++)
  {
   double d = Math.random();
   System.out.println(d);
  }
}
}
打印出来的随机数为何都是零点几呢,而且长度也不一样呢?
0.022477275137117614
0.29096203630192685
0.2527930596110869
0.4572581200704846
0.8504681536178457
0.153822991619748
0.36556733651905826
0.4113254332307399
0.4158753410455025
0.6207439696978868

作者: 舒远    时间: 2012-9-5 15:58
Math.random();得到的随机数是介于0和1之间的浮点数。数学都学过区间,这个0到1 用区间表示:[0,1),是一个左闭右开的区间
作者: 赵云柯    时间: 2012-9-5 16:02
Math.random()方法返回带正号的 double 值,该值大于等于 0.0 且小于 1.0

如果希望得到更大范围的随机数,可以将Math.random()方法返回的double值乘以一定的倍数

既然是随机数,当然小数点后面的位数也会不同
作者: 刘佳    时间: 2012-9-5 16:03
舒远 发表于 2012-9-5 15:58
Math.random();得到的随机数是介于0和1之间的浮点数。数学都学过区间,这个0到1 用区间表示:[0,1),是一个 ...

哦,对,忽略了该方法返回的是带正号的 double 值了,该值大于等于 0.0 且小于 1.0。
但为何每次数字的长度不同呢,不应该只是每次的数字不同而已吗?
作者: 刘学    时间: 2012-9-5 16:03
public static double random()返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。


作者: 杨鹏鹏    时间: 2012-9-5 17:01
public static double random()返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。
第一次调用该方法时,它将创建一个新的伪随机数生成器,与以下表达式完全相同

new java.util.Random之后,新的伪随机数生成器可用于此方法的所有调用,但不能用于其他地方。
此方法是完全同步的,可允许多个线程使用而不出现错误。但是,如果许多线程需要以极高的速率生成伪随机数,那么这可能会减少每个线程对拥有自己伪随机数生成器的争用。


返回:
大于等于 0.0 且小于 1.0 的伪随机 double 值。
哥们  当你迷惑不解的时候别忘了看API,再牛的牛人也得看API
作者: 刘佳    时间: 2012-9-5 19:25
杨鹏鹏 发表于 2012-9-5 17:01
public static double random()返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。返回值是一个伪随机 ...

哈哈,是该多看看API,多谢提醒!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2