Java Random类构造方法的用法

importjava.util.*;publicclassMathOps{publicstaticvoidmain(String[]args){Randomrand=ne... import java.util.*;

public class MathOps {
public static void main(String[] args) {
Random rand = new Random(55);
int x=rand.nextInt(5)+1;
System.out.println(x);

}
} ///:~
seed==55,运行结果只能产生1,但是如果构造方法无参数,结果是随机的,这是不是说明前一种方法无法产生随机数
展开
 我来答
manwu91
推荐于2016-12-02 · TA获得超过486个赞
知道小有建树答主
回答量:385
采纳率:71%
帮助的人:286万
展开全部

如果不传参数默认会把当前时间作为种子。

public Random() {
    // Note: Using identityHashCode() to be hermetic wrt subclasses.
    setSeed(System.currentTimeMillis() + System.identityHashCode(this));
}

在java中所谓的随机数只是通过对种子进行一些算数运算得到的,所以又叫伪随机数

protected synchronized int next(int bits) {
    seed = (seed * multiplier + 0xbL) & ((1L << 48) - 1);
    return (int) (seed >>> (48 - bits));
}

public int nextInt() {
    return next(32);
}

由于生成的是伪随机数,所以在传入的种子很重要。

当不传入种子时,因为每次运行都会使用当前时间,而时间是一直在变的,所以每次运行时的种子也是在变的,因此你看到的结果是随机的。

人鱼的桥段
2015-07-09 · 超过91用户采纳过TA的回答
知道小有建树答主
回答量:224
采纳率:75%
帮助的人:77.9万
展开全部
Random不需要传参的 给你个例子
public class RandomTest {
public static void main(String[] args) {
int max=20;
int min=10;
Random random = new Random();
int s = random.nextInt(max)%(max-min+1) + min;
System.out.println(s);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式