C# 如何使随机数遵循某些自定义规则?

C# 如何使随机数遵循某些自定义规则?,c#,random,C#,Random,我试图创建一个随机三项式生成器,我希望这两个随机数遵循三项式规则(num1+num2=b)(num1*num2=c) 我希望数字能写下来,但事实并非如此。另外,我不知道如何使随机数遵循这些规则。PS-随机数总是一样的,我如何改变它?以下是我对查尔斯建议的尝试: var rand = new Random(); string a = "x²"; int num1 = rand.Next(-50, 50); int num2 = rand.Next(-50, 50); int b = num1 +

我试图创建一个随机三项式生成器,我希望这两个随机数遵循三项式规则(num1+num2=b)(num1*num2=c)


我希望数字能写下来,但事实并非如此。另外,我不知道如何使随机数遵循这些规则。PS-随机数总是一样的,我如何改变它?

以下是我对查尔斯建议的尝试:

var rand = new Random();
string a = "x²";
int num1 = rand.Next(-50, 50);
int num2 = rand.Next(-50, 50);

int b = num1 + num2;
int c = num1 * num2;

Console.WriteLine($"{a}, {b}, {c}");
while (true)
{
    int guess1 = int.Parse(Console.ReadLine());
    int guess2 = int.Parse(Console.ReadLine());
    if (guess1 == num1 && guess2 == num2)
    {
        break;
    }

    Console.WriteLine("Wrong. Try again");
}

Console.WriteLine("Correct.");
我在最后简化了一点逻辑,但应该是一样的。

试试这个:

string a = "x²";
var randomGenerator = new Random();
int b = randomGenerator.Next(-50, 50);
int c = randomGenerator.Next(-50, 50);
Console.WriteLine("{0},{1},{2}", a, b, c);

bool isRunning = true;
while (isRunning)
{
    int num1 = int.Parse(Console.ReadLine());
    int num2 = int.Parse(Console.ReadLine());
    if ((num1 + num2 == b) && (num1 * num2 == c))
    {
        Console.WriteLine("Correct.");
        isRunning = false;
    }
    else
    {
        Console.WriteLine("Wrong. Try again");
    }
}
Console.ReadLine();
说明:

首先是随机问题。Random不是以随机方式生成数字,而是计算数字。因此,由于它是一种算法,因此每次尝试都会使用相同的算法。为了应对这种情况,随机种子本身与当前时间,然后改变算法的输出。在您的例子中,您创建了两个随机对象,但它们的生成速度非常快,以至于两个对象实际上都是在同一时间播种的,因此计算的是相同的“随机”数。这就是为什么在我的解决方案中,我们只创建一个
Random
对象


第二:如果您只想向控制台写入一个字符串,请将字符串浓缩并将其作为一个参数传递。

随机生成
num1
num2
,然后从中计算
b
c
?nums应该是用户输入,用b和cYes回答问题,但这有关系吗?生成
num1
num2
,计算
b
c
,将它们显示给用户,让他们猜测
num1
num2
。变量总是整数吗?如果b和c是随机的,有时num1和num2将是小数。我注意到您需要共享
random
的实例,否则每次都会得到相同的两个数字。有关更多信息,请参阅。另外,
Console.WriteLine
的重载只会打印
a
的值(认为它是格式字符串+参数)。也许
Console.WriteLine($“x²+{b}x+{c}”)
可能更好?谢谢,我真的应该在发布之前试用一下!我改变了密码。我用逗号离开了writeline,因为有时候值有负号。此外,还需要检查输入以确保它们是数字,但不希望使代码比演示您的想法所需的更长和更复杂。谢谢,我现在了解了它的工作原理,感谢您的解释,但每当我尝试运行它时,它都会说$是一个意外的字符
string a = "x²";
var randomGenerator = new Random();
int b = randomGenerator.Next(-50, 50);
int c = randomGenerator.Next(-50, 50);
Console.WriteLine("{0},{1},{2}", a, b, c);

bool isRunning = true;
while (isRunning)
{
    int num1 = int.Parse(Console.ReadLine());
    int num2 = int.Parse(Console.ReadLine());
    if ((num1 + num2 == b) && (num1 * num2 == c))
    {
        Console.WriteLine("Correct.");
        isRunning = false;
    }
    else
    {
        Console.WriteLine("Wrong. Try again");
    }
}
Console.ReadLine();