构造函数中的随机数c#

random number in constructor c#

我是一名学生,正在学习游戏开发入门编程课程。我的一项任务要求我在构造函数中定义玩家攻击伤害。我希望损坏是随机的,但无论我做什么,我都会得到相同的数字。这是我做的一个测试,看看如何让这个数字随机。

class MainChar
{
    public static Random random = new Random();
    public int Atk;        

    public MainChar()
    {
        this.Atk = random.Next(11);
    }

    public void h()
    {
        while (Atk != 10)
        {
            Console.WriteLine(Atk);

        }
    }
}

我正在我的主程序中创建 MainChar 的新实例,并且 运行 h()。我得到一个相同数字的重复列表,而不是 1 到 10 之间的随机数字。有什么想法吗?

P.S。 This thread 很有用,但无法回答我的问题。

在方法h()中,while如果atk!=10形成死循环。所以你需要在那里指定一个退出条件来打破循环;你可以这样使用:

public void h()
{
    while (Atk != 10)
    {
        this.Atk = random.Next(11);                   
    }
    Console.WriteLine(Atk);
}

现在您将得到一个介于 0 和 11 之间的随机数,而不是 10 在控制台中

如果你想继续随机数直到它产生中断条件或数字,你可以将 h() 函数修改为:

public int Atk;
public static int max = 100;

public void h()
{
    while (Atk != 10)
    {
        this. Atk = random.Next(max);
        Console.WriteLine(Atk);
    }
}