有没有一种方法可以给函数提供两个随机参数,并使它们相同?

时间:2020-07-18 22:51:07

标签: java

说我想调用一个内置函数(这意味着我不能更改它):

foo(int x,  int y)

我希望x和y的参数是随机的,但应该是相同的随机数。我知道我可以做到

double rand = Math.random();
foo(rand, rand);

但是,有什么方法可以在一行中执行此操作,而无需声明单独的变量?如

foo(Math.random(), Math.random());

但要使它们相同。只是好奇是否有一个简单的方法来执行此操作,我不知道这样做会避免添加多余的行。也许我可以输入第二个参数,该参数基本上告诉它“使其与第一个参数相同”?任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:7)

是的,因此可以通过创建另一个带有1个参数并调用原始方法的方法来轻松完成此操作。这样可以确保在调用此方法时该值始终相同。如果您不想公开使用原始的foo(int,int),请不要公开它,并将其隐藏为私有或私有包。

foo(int value) {
    foo(value, value);
}
foo(Math.random());

答案 1 :(得分:5)

定义lambda或方法

Function<Integer, Integer> fnc = v -> foo(v,v);
fnc.apply((int)(Math.random()*10));

public static int foo(int x) {
  return foo(x, x);
}

public int static foo(int x, int y) {
     return x + y;
}

答案 2 :(得分:2)

不。每次调用random()方法时,都会生成一个介于0.0和1.0之间的新数字。甚至使用RandomThreadLocalRandom类的替代方法,其各自方法的行为也相同。

您有两个选择:

  1. 您可以存储调用Math.random()的结果,并将其值通过xy传递,就像您在帖子中提到的那样。
  2. 函数中只能有一个参数:
    foo(int x)
    
    现在,您可以传递所需的值。但是,如果要使用具有两个参数的函数,则可以这样调用方法:
    foo(int x) {
        foo(x, x);
    }
    
相关问题