在 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 以尝试获得整数答案?谢谢!
由于整数除法向下舍入,因此应更改num1
以确保精确除法:
num1 = randomNum.Next(0, 10);
num2 = randomNum.Next(1, 10);//Cannot divide by 0!!
answer = num1 / num2;
num1 = answer * num2;
如果num1 = 7
和num2 = 3
,answer
将被2
,num1
将更改为6
;使num1 == 6
、num2 == 3
和answer == 2
您还可以生成num2
和answer
并计算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;
}
}