首页 > 解决方案 > 生成两个具有特定规则的随机数

问题描述

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

我尝试使用 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;

每次我运行这段代码时,它总是给我第一个整数多于第二个整数。但除法结果将是余数

标签: c++random

解决方案


你的循环检查是错误的!试试这个……</p>

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

您需要继续运行循环,直到满足两个条件,所以如果其中一个__or__另一个不满足,请继续尝试!

此外,如果您<的第一个比较是 ,而不是<=,那么您很可能会得到两个相同的数字。


推荐阅读