如何得到偶数/奇数随机数可被第一个随机数整除

时间:2013-11-13 05:36:09

标签: java

我有以下代码:

        quesPart1 = ran.nextInt((numbersBetween - 2) + 1) + 2;
        quesPart2 = ran.nextInt((numbersBetween - 2) + 1) + 2;
        if(quesPart2 > quesPart1)
        {
            int placeHolder = quesPart1;
            quesPart1 = quesPart2;
            quesPart2 = placeHolder;                    
        }
        //if first part is even
        if(quesPart1 % 2 == 0)
        {
            if(quesPart2  % 2 != 0)
            {
                --quesPart2;
            }
        }
        else
        {
            if(quesPart2 % 2 == 0)
            {
                ++quesPart2;
            }
        }

上面的代码确保如果quesPart1大于quesPart2并且两者都是偶数或两者都是奇数。现在我想得到的是也可以互相整除的随机数。就像我将quesPart1除以quesPart2一样,我得到整数而不是十进制数。任何想法我怎么能做到这一点,而不会给上面的代码增加太多的复杂性。

5 个答案:

答案 0 :(得分:1)

  

如果我将quesPart1除以quesPart2,我会得到整数而不是十进制数。

保持简单:生成随机数并获取其产品。例如:

quesPart2 = ran.nextInt(UPPER_BOUND);
int temp = ran.nextInt(UPPER_BOUND);
questPart1 = temp * quesPart2;

如同原始问题一样,指定范围对读者来说是一个练习。 (什么,你不认为我会为你做所有的想法,对吗?; - )

答案 1 :(得分:1)

查看模数运算符a % b。当a除以b时,它返回剩余量。当b干净地划分为a,使得没有小数部分时,a % b将为零。

为了生成一个可被另一个整除的数字,给定两个随机数ab,只需将a乘以b即可。这将为您提供c,这是一个ab的倍数,因此可以干净利落地完成,而不会有余数。

答案 2 :(得分:1)

您可以执行以下操作:

int div = quesPart1 / quesPart2;
quesPart1 = div * quesPart2;

在代码底部添加此代码。

答案 3 :(得分:0)

我想出了这个简单的功能和一个易于实现的do while循环。

// This is a simple function to set the min and max integers you want
    const getRandomIntInclusive = (min, max) => {
          min = Math.ceil(min);
          max = Math.floor(max);
          return Math.floor(Math.random() * (max - min + 1)) + min;
        }
        //Define some variables variables
        let firstNo = 0
        let secondNo = 0
        let isDivisible = 0;
        //generate random ints until first number is divisible to second number
        do {
           //get random int between 1-9 for the first and second integer
           firstNo = getRandomIntInclusive(1, 9) 
           secondNo = getRandomIntInclusive(1, 9)
           isDivisible = firstNo % secondNo;  //Check if it's fully divisible
           }
           while (isDivisible != 0)      //Run until it is fully divisible

答案 4 :(得分:-1)

要在java中生成随机数,您可以使用ran.nextInt()或请参阅this link以了解如何生成随机数。 存储这2个随机数(如num1和num2)。

要验证分割num1num2后的解决方案是否为整数,请使用以下方法:

sol = num1 / num2
if (sol == (int)sol)
{
   ... //true if the solution is an integer
}