【问题标题】:Generate random numbers that can be divided by 2生成可被 2 整除的随机数
【发布时间】:2016-02-24 16:20:31
【问题描述】:

我需要生成可以被 2 整除的随机数 所以:2 4 6 8 10 12 14 16 18 .....

我的代码如下:

Random random = new Random();
int i = random.nextInt(20);

希望你知道我想要什么并且你能帮助我。

【问题讨论】:

  • 或者只是将结果乘以 2。
  • 我们需要多少重复的rand%2 != 0劣质解决方案?

标签: java random numbers


【解决方案1】:

只需将 i 乘以 2

Random random = new Random();
int i = random.nextInt(20) * 2;

如果您想保持在 20 以下,请调整随机上限(替换为 10)

int i = random.nextInt(10) * 2;

我认为循环版本太重且效率低下

【讨论】:

  • “我认为循环版本太重且效率低下” - 不能同意更多
【解决方案2】:

简单地说:

int number = new Random().nextInt(10) * 2;

【讨论】:

    【解决方案3】:

    检查结果的余数/模数,如果为 1,则将 i 加 1 以得到偶数:

    Random random = new Random();
    int i = random.nextInt(20);
    if(i%2 == 1){
        i++;
    }
    

    【讨论】:

      【解决方案4】:

      确定性方法 -

      Random random = new Random();
      ...
      private int generateRandomDividedByTwo(){
         int i = -1;
         do{
            i = random.nextInt(20);
         }while(i%2!=0);
         return i;
      }
      

      【讨论】:

      • 为什么还要费心生成奇数?
      • 确保你的随机性在范围内。 ;)... 确定性方法
      【解决方案5】:
      int number = 100; //number of numbers you want to generate
      for(int i = 0; i < number; i++) {
          int rand = random.nextInt(number);
          while(rand % 2 != 0) {
              rand = random.nextInt(number);
          }
          System.out.println(rand);
      }
      

      【讨论】:

      • 可能会循环一段时间
      • @SteveKuo 这取决于 bi 是多少限制数如果它太大那么是的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-26
      • 1970-01-01
      • 2019-10-01
      • 2022-01-23
      • 2018-10-09
      • 2014-08-22
      • 2019-05-24
      相关资源
      最近更新 更多