在范围内生成随机偶数?

时间:2015-11-23 12:08:45

标签: java random range

这是以下格式:

 int randomNum = rand.nextInt((max - min) + 1) + min;

所以这是我的代码。我试图获得1到100之间的随机偶数:

 Random rand = new Random(); 
 int randomNum = rand.nextInt((100 - 2) + 1) + 2;

我看到一个解决方案是将数字乘以2,但这会超出预期的范围。

我想过做一堆if语句来解决这个问题,但它看起来过于复杂。有一个相对简单的解决方案吗?

6 个答案:

答案 0 :(得分:9)

只需生成0到49之间的数字,然后将其乘以2.

Random rand = new Random(); 
int randomNum = rand.nextInt(100/2) *2;

要在范围内执行此操作,只需添加范围:

int randomNum = startOfRange+rand.nextInt((endOfRange-startOfRange)/2) *2;

请注意,startOfRange应为偶数或转换为偶数。

答案 1 :(得分:1)

另一种方法(可能不是最佳方法):

  
      
  1. 创建一个数组(或列表),其中包含1到1之间的所有偶数       100.(循环很容易)
  2.   
  3. 当你需要一个随机的偶数时,只需从该数组或列表中取一个随机数(使用随机的长度或大小)。
  4.   

答案 2 :(得分:1)

生成2到1000之间的随机数的最佳方法

Random random = new Random();
        int Low = 2;
        int High = 1000;
        int randomNumber = random.nextInt(High-Low) + Low;
        if(randomNumber % 2 != 0){
            randomNumber = randomNumber + 1;
        }

https://www.google.com/search?q=sim+phone+details

答案 3 :(得分:1)

在Java 1.7或更高版本中,我会使用ThreadLocalRandom

import java.util.concurrent.ThreadLocalRandom;

// Get even random number within range [min, max]
// Start with an even minimum and add random even number from the remaining range
public static int randEvenInt(int min, int max) {
    if (min % 2 != 0) ++min;
    return min + 2*ThreadLocalRandom.current().nextInt((max-min)/2+1);
}

// Get odd random number within range [min, max]
// Start with an odd minimum and add random even number from the remaining range
public static int randOddInt(int min, int max) {
    if (min % 2 == 0) ++min;
    return min + 2*ThreadLocalRandom.current().nextInt((max-min)/2+1);
}

使用ThreadLocalRandom的原因解释为here。另请注意,我们对ThreadLocalRandom.nextInt()的输入+1的原因是为了确保max包含在范围内。

答案 4 :(得分:1)

private int getRandomNoOdd(int maxValue) {//min value is 0, including zero, max value can potentially be reached by randomness
    int random = 0;
    while (true) {
        random = (int) (Math.random() * (maxValue + 1));
        if (random % 2 != 0)
            continue;
        break;
    }
    return random;
}

答案 5 :(得分:1)

您还可以从某个范围中获取随机数,然后,如果%2!= 0,则加1。