首页 > Java > java教程 > 正文

为什么我的 Java 随机数生成器在从另一个类调用时返回相同的数字?

DDD
发布: 2024-11-07 04:54:02
原创
880 人浏览过

Why does my Java random number generator return the same number when called from another class?

具有固定种子的Java随机数生成器

问题:

在Java中,设置时随机数生成器的种子,为什么当我从另一个类调用该方法时,它总是返回相同的数字?

代码:

public class Numbers {
    public int random(int i) {
        Random randnum = new Random();
        randnum.setSeed(123456789);
        return randnum.nextInt(i);
    }
}
登录后复制

调用时Numbers.random(10) 多次,它始终输出相同的值。我们如何修改代码来生成不同的随机数,同时又保持设置种子的要求?

答案:

为了保证生成不同的随机数,随机实例必须在整个类中共享,而不是为每个方法调用重新创建。这可以通过以下修改来实现:

public class Numbers {
    private Random randnum;  // Declare the Random instance as a class variable

    public Numbers() {
        randnum = new Random();
        randnum.setSeed(123456789);
    }

    public int random(int i) {
        return randnum.nextInt(i);
    }
}
登录后复制

通过在类构造函数中初始化 randnum 实例并使其可通过类的方法访问,我们确保在整个类中使用相同的 Random 对象,从而导致每个方法调用都会生成不同的随机数。

以上是为什么我的 Java 随机数生成器在从另一个类调用时返回相同的数字?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!