黑马程序员技术交流社区

标题: 求助:数组a的长度怎么得来的??? [打印本页]

作者: goldenking56    时间: 2012-3-29 02:10
标题: 求助:数组a的长度怎么得来的???
本帖最后由 goldenking56 于 2012-3-29 02:13 编辑

import java.util.*;
public class aa
{
  public static void main(String []agrs)
{
  int [] a;
  Random rand=new Random(47);
  a=new int[rand.nextInt(20)];
  System.out.print(a.length);
  System.out.println(Arrays.toString(a));
}
}
我知道是根据这句话得来的,a=new int[rand.nextInt(20)];   
随机不超过20。
但为什么每次得到的长度都是我填写的最大长度减2? 为什么?
作者: 贠(yun)靖    时间: 2012-3-29 03:55
本帖最后由 贠(yun)靖 于 2012-3-29 04:46 编辑

好像是因为你定义了参数,怎么不是十九呢?
作者: 和心愿    时间: 2012-3-29 07:10
public int nextInt(int n)
返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。
作者: 黑马胡林    时间: 2012-3-29 07:22
这是电脑,自动随机生成的数,跟堆内存有关。换个数试试,可能跟你的参数有关。用垃圾回机下试试..
作者: 李彬彬    时间: 2012-3-29 10:01
Random rand=new Random(47);  在API中Random(long seed)使用单个long 种子创建一个新的随机数生成器。
a=new int[rand.nextInt(20)]; 在这里又创建一个伪随机数生成器
这两行创建了2次随机数生成器,也就是说在 第一次产生随机数是0~19,第二次产生随机数是0~18。
所以在你每次运行得到的长度都是填写的最大长度减2




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