生成排除下限的随机数

时间:2020-10-24 21:08:41

标签: java random

我想在条件为(x,y]的情况下生成一个介于x和y之间的随机数,因此x被排除在外,但y被包括在内。

我正在使用Java。

我知道要排除上限,它是Math.random * y,但是您要为下限做什么?我不确定您将如何执行此操作,因为Math.random函数返回相反的[0,1),所以我不确定您如何将其求反。

我还在此来源处获得了一个链接,以获取答案,但是我没有任何运气。 https://careerkarma.com/blog/java-math-random/#:~:text=The%20Math.,is%20always%20less%20than%201

请让我知道

2 个答案:

答案 0 :(得分:1)

要获取(0,1],您只需拿1.0 - Math.random()

double randomDouble = 1.0 - Math.random();

由此,您可以做一些随机的正常事情。例如,如果您想要任何双倍(6,10],则可以执行以下操作:

double randomDouble = (1.0 - Math.random()) * (10.0 - 6.0) + 6.0;

或者只是通用

double randomDouble = (1.0 - Math.random()) * (max - min) + min;

答案 1 :(得分:0)

规则:如果a位于[x, y[中,则a+1位于]x,y]


因此已知公式为double r = Math.random() * (upp - low) + low;

因此,使用+1,它变为

Random rand = new Random()
int low = 10, upp = 20;

// for a double
double r = 1 + rand.nextDouble() * (upp - low) + low;

// for an int
int r = 1 + rand.nextInt(upp - low) + low;