A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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? 为什么?

5 个回复

倒序浏览
本帖最后由 贠(yun)靖 于 2012-3-29 04:46 编辑

好像是因为你定义了参数,怎么不是十九呢?
回复 使用道具 举报
public int nextInt(int n)
返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。
回复 使用道具 举报
这是电脑,自动随机生成的数,跟堆内存有关。换个数试试,可能跟你的参数有关。用垃圾回机下试试..
回复 使用道具 举报
Random rand=new Random(47);  在API中Random(long seed)使用单个long 种子创建一个新的随机数生成器。
a=new int[rand.nextInt(20)]; 在这里又创建一个伪随机数生成器
这两行创建了2次随机数生成器,也就是说在 第一次产生随机数是0~19,第二次产生随机数是0~18。
所以在你每次运行得到的长度都是填写的最大长度减2
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马