C# 构造函数c中的随机数

C# 构造函数c中的随机数,c#,random,constructor,class-constructors,C#,Random,Constructor,Class Constructors,我是一名学习游戏开发入门编程课程的学生。我的一项任务要求我在构造函数中定义玩家攻击伤害。我希望伤害是随机的,但无论我做什么,我都会得到相同的数字。这是我做的一个测试,看看我如何能让这个数字是随机的 class MainChar { public static Random random = new Random(); public int Atk; public MainChar() { this.Atk = random.Nex

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

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.很有用,但无法回答我的问题。

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

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

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

如果您想继续使用随机数,直到它生成一个中断条件或数字,您可以将h func修改为:

public int Atk;
public static int max = 100;

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

问问自己:我观察变量变化多少次?现在,我要在多少地方更改变量?你看到这两件事之间的联系了吗?另外,这里有一些给新程序员的好建议。相信我,您不希望每次程序中出现错误时都要求StackOverflow。学你的手艺!您正在调用random。下一个在构造函数中只调用一次,因此没有任何更改。谢谢你们,这澄清了我的问题。Eric,我非常感谢你分享那篇文章。我一定会读一读,以避免在可以避免的情况下问这样简单的问题。谢谢,这回答了我的问题。当我把我的this.Atk=random.Next11;线