在Java中获取随机数

在Java中获取随机数,java,random,Java,Random,我想在Java中得到一个介于1到50之间的随机值 在Math.random()的帮助下,我如何才能做到这一点 如何绑定Math.random()返回的值 int max = 50; int min = 1; 1.使用Math.random() 在int的情况下,这将为您提供从1到50的值 如果是双精度,则为1.0(含)至50.0(不含) 为什么? 方法返回一个随机变量 数字介于0.0和0.9之间…,您 把它乘以50,这样就得到了上限 变为0.0到49.999。。。当你加1时,它变为1.0到50

我想在Java中得到一个介于1到50之间的随机值

Math.random()的帮助下,我如何才能做到这一点

如何绑定
Math.random()
返回的值

int max = 50;
int min = 1;
1.使用Math.random() 在int的情况下,这将为您提供从1到50的值 如果是双精度,则为1.0(含)至50.0(不含)

为什么?

方法返回一个随机变量 数字介于0.0和0.9之间…,您 把它乘以50,这样就得到了上限 变为0.0到49.999。。。当你加1时,它变为1.0到50.999…,现在当你截断为int时,你得到1到50。(感谢评论中的@rup)。这两种方法都写得很棒

2.在Java中使用随机类。 这将给出0到49之间的值

对于1到50:
rand.nextInt((最大-最小)+1)+min


一些Java Random的非凡之处。

第一个解决方案是使用
Java.util.Random
类:

import java.util.Random;

Random rand = new Random();

// Obtain a number between [0 - 49].
int n = rand.nextInt(50);

// Add 1 to the result to get a number from the required range
// (i.e., [1 - 50]).
n += 1;
另一个解决方案是使用
Math.random()


“0.0到50.0,当您添加1时,它将变为1.0到50.0”肯定是不正确的?那里一定有49或51个。@Blorgbeard引用错误;结果大于或等于0,但严格小于1([文档]()所以它是0.0到49.999等。当你加1时,它变成1到50.999等。当你截断为int时,它变成1到50。例如,它不适用于所有范围。当我尝试获取28到之间的数字时,它给我317@Maysara我更新了第二个例子来处理随机范围。具体的例子是使用1-50。如果你想要数字s在8到50之间第一个版本你会得到8到58之间的值。你需要这样一个公式才能正确地得到它……(int)(Math.random()*(50-8)+8)最好使用random,而不是Math.random.random更有效,更没有偏见。所以如果我取45作为最小值,并且
rand.nextInt(50)
返回30,我得到一个介于45和50之间的值?嗯……好吧…@DanielF的困惑是可以理解的,因为答案中的注释是误导性的。rand.nextInt(50)
中的50只会在这种情况下给出最大值。
rand.nextInt(50)
将返回一个介于0(包括)和50(排除)之间的整数(换句话说[0-49])。我们将1添加到[1-50]。因此,如果您将45作为最小值添加到rand.nextInt(50)中,则包含的值将介于45和94之间。_Rafi确实如此。
rand.nextInt(1)
将只返回0,而不是1或0。注意!!util.Random已在Java 8中实现。它将给出1到49的输出
Random rand = new Random(); 
int value = rand.nextInt(50); 
import java.util.Random;

Random rand = new Random();

// Obtain a number between [0 - 49].
int n = rand.nextInt(50);

// Add 1 to the result to get a number from the required range
// (i.e., [1 - 50]).
n += 1;
double random = Math.random() * 49 + 1;
int random = (int)(Math.random() * 50 + 1);