我正在编写一个生成两个随机整数并显示将第一个数字除以第二个数字的结果的代码。
我希望第一个整数大于第二个整数,并且除法运算结果无余数(一个整数)

我尝试使用do while循环并继续更改整数,直到它生成所需的数字为止。

std::random_device device;
std::mt19937 rd(device());
std::uniform_int_distribution<int> random(1, 100);

int firstNumber;
int secondNumber;

do
{
    firstNumber = random(rd);
    secondNumber = random(rd);
}
while ((firstNumber < secondNumber) && (firstNumber % secondNumber != 0));

int result = firstNumber / secondNumber;

//print the integer to check it
std::cout << firstNumber << std::endl;
std::cout << secondNumber << std::endl;

每次我运行此代码时,它总是给我第一个整数而不是第二个整数。但是除法结果将是余数

最佳答案

您的循环检查是错误的!试试这个 …

do
{
    firstNumber = random(rd);
    secondNumber = random(rd);
} while ((firstNumber <= secondNumber) || (firstNumber % secondNumber != 0));

您需要继续运行循环,直到同时满足两个条件为止,因此,如果一个 __or__ 另一个都不满足,请继续尝试!

另外,如果您将<作为您的第一个比较对象,而不是<=,则有可能两个数字都相同。

09-07 06:40