Generating a number between 1 and 2 java Math.random()

This question already has an answer here:

  • How do I generate random integers within a specific range in Java? 57 answers

  • If you want the values 1 or 2 with equal probability, then int temp = (Math.random() <= 0.5) ? 1 : 2; int temp = (Math.random() <= 0.5) ? 1 : 2; is all you need. That gives you a 1 or a 2, each with probability 1/2.


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

    Math.random() returns numbers from [0, 1) . Because (int) always rounds down (floors), you actually want the range [1,3) , so that [1,2) will be rounded to 1 and [2,3) will be rounded to 2.


    Try this.

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

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

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

    So when you take the floor, it is either 1 or 2 with equal
    probability because [1.5, 2.5) = [1.5, 2) U [2, 2.5)
    and length([1.5, 2)) = length([2, 2.5)) = 0.5 .

    链接地址: http://www.djcxy.com/p/17672.html

    上一篇: 在两者之间生成随机Double

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