当前位置: 首页 > 面试题库 >

Java random在我设置种子时总是返回相同的数字?

岳嘉悦
2023-03-14
问题内容

我需要有关正在创建的随机数生成器的帮助。我的代码如下(在一个称为数字的类中):

public int random(int i){
    Random randnum = new Random();
    randnum.setSeed(123456789);
    return randnum.nextInt(i);
}

当我从另一个类调用此方法(以生成随机数)时,它总是返回相同的数字。例如,如果我要这样做:

System.out.println(numbers.random(10));
System.out.print(numbers.random(10));

它总是打印相同的数字,例如55。我必须怎么做才能打印两个不同的数字,例如5 8

我必须设置种子。

谢谢


问题答案:

你需要Random()在整个类中共享实例:

public class Numbers {
    Random randnum;

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

    public int random(int i){
        return randnum.nextInt(i);
    }
}


 类似资料:
  • 问题内容: 我在某处读到,函数应始终仅返回一种类型,因此以下代码被视为错误代码: 我想更好的解决方案是 返回None然后创建一个新的空元组不是更便宜的内存明智的选择吗?或者即使在较大的项目中,这种时差也太小而无法引起注意? 问题答案: 为什么函数应该返回一致类型的值?满足以下两个规则。 规则1-函数具有“类型”-输入映射到输出。它必须返回一致的结果类型,否则它不是函数。一团糟。 从数学上讲,我们说

  • 我使用 Visual Studio AWS 扩展是为了使用 Docker 映像模板创建简单的 aws lambda 函数。Docker 映像已生成、标记并最终推送到容器注册表。从那里,我使用容器映像创建一个新的 lambda 函数。但是当我测试它时(在本地使用dotnet lambda调用函数或使用AWS控制台上的测试工具),我得到了 亚马逊Lambda工具。NET核心应用程序(5.3.0)项目主

  • 我正在解析一个文件,其中有城市名和到其他城市的距离,格式如下: 我认为问题在于,当我分割字符串时,它创建了不同的对象,并且由于某种原因,string.equals和/或hashcode()给出了不同的结果。因此,map.get(key)返回空值。但我不知道如何解决这个问题。 }

  • 我目前正在研究一种从特定网站中提取数据的解决方案(使用css选择器从网站的html表中返回价格列表)。为了做到这一点,我决定使用HtmlUnit库,因为我看到它支持很多特性。在我完成代码并针对同一页面(使用相同的搜索参数)进行测试后,我认为我已经完成了,但在为多个页面启动多个线程后,一切都发生了变化。问题是,基本上下面的代码总是为所有线程返回相同的旧页面,我根本不理解这种行为: 我使用同一个网站,

  • 这是我的代码,我不知道为什么我的bean没有被注入,它在构造函数中总是空的 下面是我的配置类: 我的堆栈跟踪 启动ApplicationContext时出错。若要显示自动配置报告,请在启用“debug”的情况下重新运行应用程序。11:55:29.139[restartedMain]错误O.S.Boot.SpringApplication-应用程序启动失败org.SpringFramework.Be

  • 只有当我有一对像名字(值)数字(键)这样的代码时,这段代码才有效,但我遇到了像名字数字、数字这样的情况。它返回名称number1,名称number2