生成1到2之间的数字java Math.random()

时间:2014-01-21 00:08:32

标签: java math random

我正在使用导入的math.random()类创建1到2之间的数字范围。

到目前为止,这是我如何运作,但我看不出它是如何工作的:

int tmp = (int)(Math.random()*1)+1;

任何人都知道这是否真的可以达到范围?如果没有..然后是什么

编辑:寻找数字1或2.

4 个答案:

答案 0 :(得分:8)

如果您希望值1或2具有相同的概率,那么int temp = (Math.random() <= 0.5) ? 1 : 2;就是您所需要的。这给你1或2,每个概率为1/2。

答案 1 :(得分:4)

int tmp = (int) ( Math.random() * 2 + 1); // will return either 1 or 2

Math.random()返回[0, 1)的数字。由于(int)总是向下舍入(楼层),因此您实际上需要范围[1,3),以便将[1,2)舍入为1,将[2,3)舍入为2。

答案 2 :(得分:2)

试试这个。

int tmp = (int)( Math.floor( Math.random() + 1.5 ) )

Math.random() -> [0, 1)

Math.random() + 1.5 -> [1.5, 2.5)

因此,当你发言时,它是1或2,相等的 概率因为[1.5, 2.5) = [1.5, 2) U [2, 2.5)
length([1.5, 2)) = length([2, 2.5)) = 0.5

答案 3 :(得分:1)

好的,您想使用Math.random,但可以使用java.util.Random,因此不需要进行转换或舍入:

    java.util.Random random = new java.util.Random();
    int tmp = random.nextInt(2) + 1;