我有以下代码:
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一样,我得到整数而不是十进制数。任何想法我怎么能做到这一点,而不会给上面的代码增加太多的复杂性。
答案 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
将为零。
为了生成一个可被另一个整除的数字,给定两个随机数a
和b
,只需将a
乘以b
即可。这将为您提供c
,这是一个a
和b
的倍数,因此可以干净利落地完成,而不会有余数。
答案 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)。
要验证分割num1
和num2
后的解决方案是否为整数,请使用以下方法:
sol = num1 / num2
if (sol == (int)sol)
{
... //true if the solution is an integer
}