在 C# 中生成数字,但跳过满足特定条件的数字

本文关键字:数字 满足 特定条件 | 更新日期: 2023-09-27 18:30:49

所以我正在构建一个小型数学游戏,其中生成随机总和,并在回答后添加到正确或错误的分数中。进展顺利,我在某些事情上得到了一些帮助,并在此过程中学到了东西,但我遇到了另一个我无法弄清楚的问题。游戏在生成总和时在 +、-、* 和/运算符之间进行选择,+、- 和 * 效果很好,但/经常需要程序不喜欢的十进制答案。我想尝试找出一种方法,使其不会生成要除以的数字,这将在潜水第一个数字时产生十进制答案。以下是一些示例代码,用于清除我到目前为止所拥有的内容:

        var randomNum = new Random();
        num1 = randomNum.Next(0, 10);
        num2 = randomNum.Next(0, 10);
        char[] operators = { '+', '-', '*', '/' };
        char op = operators[randomNum.Next(operators.Length)];
        switch (op)
        {
            case '+':
                answer = num1 + num2;
                label1.Text = num1.ToString() + " + " + num2.ToString() + " = ";
                break;
            case '-':
                answer = num1 - num2;
                label1.Text = num1.ToString() + " - " + num2.ToString() + " = ";
                break;
            case '*':
                answer = num1 * num2;
                label1.Text = num1.ToString() + " * " + num2.ToString() + " = ";
                break;
            case '/':
                answer = num1 / num2;
                label1.Text = num1.ToString() + " / " + num2.ToString() + " = ";
                break;
         }

我尝试将说明 num1 和 num2 的位移动到每种情况下,以便它们看起来像这样:

            case '/':
                num1 = randomNum.Next(0, 10);
                num2 = randomNum.Next(0, 10);
                answer = num1 / num2;
                label1.Text = num1.ToString() + " / " + num2.ToString() + " = ";
                break;

但是我无法想象我可以在括号中放入什么而不是(0,10)来避免十进制和答案。有没有办法让它确定答案是否是小数,以及是否重新滚动 num2 以尝试获得整数答案?谢谢!

在 C# 中生成数字,但跳过满足特定条件的数字

由于整数除法向下舍入,因此应更改num1以确保精确除法:

num1 = randomNum.Next(0, 10);
num2 = randomNum.Next(1, 10);//Cannot divide by 0!!
answer = num1 / num2;
num1 = answer * num2;

如果num1 = 7num2 = 3answer将被2num1将更改为6;使num1 == 6num2 == 3answer == 2

您还可以生成num2answer并计算num1

num2 = randomNum.Next(1, 10);//Cannot divide by 0!!
answer = randomNum.Next(0, 10);
num1 = answer * num2; // answer == num1 / num2

很简单。 发送整数,你会得到一个号码,它会平均分配(对孩子来说很容易)。

public static class TestWholeNumber
{
    public static int ReturnWholeNumber(int testnum)
    {
        var randomNum = new Random(Guid.NewGuid().GetHashCode());
        int num2 = 0;
        do
        {
            num2 = randomNum.Next(1, 10);
        }
        while (testnum % num2 != 0);
        return num2;
    }
}