0

我有以下代码:

        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 一样,我得到整数而不是十进制数。任何想法如何在不给上述代码增加太多复杂性的情况下做到这一点。

4

5 回答 5

1

就像我将 quesPart1 除以 quesPart2 一样,我得到整数而不是十进制数。

保持简单:生成随机数并获取他们的产品。例子:

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

指定范围,就像在原始问题中一样,留给读者一个练习。(什么,你不认为我会为你做所有的想法,是吗?;-)

于 2013-11-13T05:37:21.693 回答
1

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

为了生成一个可以被另一个整除的数字,给定两个随机数,a并且b,只需a乘以b。这将为您提供一个数字,它是和c的倍数,因此可以被两者整除而没有余数。ab

于 2013-11-13T05:39:11.187 回答
1

您可以执行以下操作:

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

将此代码添加到代码的底部。

于 2013-11-13T05:39:55.183 回答
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
于 2018-10-08T09:19:06.443 回答
-1

要在 java 中生成随机数,您可以使用ran.nextInt()或参考此链接了解如何生成随机数。存储这 2 个随机数(作为 num1 和 num2)。

要验证除num1和后的解是否num2为整数,请使用以下方法:

sol = num1 / num2
if (sol == (int)sol)
{
   ... //true if the solution is an integer
}
于 2013-11-13T05:59:25.707 回答