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



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

foo(int x,  int y)

我希望x和y的参数是随机的,但是相同的随机数。我知道我可以用做到这一点

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

但是,有没有任何方法可以在一行中做到这一点,而不声明单独的变量?如

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

但要让它们保持一致。只是好奇是否有一种我不知道的简单方法可以避免添加额外的行。也许我可以把一些东西输入到第二个参数中,基本上告诉它";使其与第一个参数";?非常感谢您的帮助。

是的,所以这可以通过创建另一个接受1个参数并调用原始方法的方法来轻松完成。这样可以确保在调用此方法时值始终相同。如果您不希望公开使用原始的foo(int,int(,请不要将其公开并隐藏为package private或private。

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

定义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;
}

否。random()方法每次被调用时都会生成一个介于0.0和1.0之间的新数字。即使是诸如使用RandomThreadLocalRandom类之类的替代方案,其行为方式也与它们各自的方法相同。

你有两个选择:

  1. 您可以存储调用Math.random()的结果,并通过xy传递该值,正如您在文章中提到的那样
  2. 函数中只能有一个参数:
    foo(int x)
    
    现在您可以直接传递所需的值。但是,如果您想要一个具有两个参数的函数,可以这样调用该方法:
    foo(int x) {
    foo(x, x);
    }
    

最新更新