C# 我的代码只能在';进入';而且不正常

C# 我的代码只能在';进入';而且不正常,c#,C#,基本上我希望我的代码生成两个随机数,然后它们相等。当我进入一个新的领域时,它是如何工作的,但不是正常的,我一辈子都不知道为什么!当我正常运行时,这两个数字总是相同的,但是当我进入程序时,它们是不同的。我希望它们都是随机的。如果有帮助的话,我正在使用visual studio 2015。 提前谢谢你 class Program { static void Main(string[] args) { DiceRoll DR = new DiceRoll();

基本上我希望我的代码生成两个随机数,然后它们相等。当我进入一个新的领域时,它是如何工作的,但不是正常的,我一辈子都不知道为什么!当我正常运行时,这两个数字总是相同的,但是当我进入程序时,它们是不同的。我希望它们都是随机的。如果有帮助的话,我正在使用visual studio 2015。 提前谢谢你

class Program
{
    static void Main(string[] args)
    {
        DiceRoll DR = new DiceRoll();
        DR.SecondRolledDice();
    }
}  

public int RolledDice()
    {
        Random numberGenerator;
        numberGenerator = new Random();
        int firstdiceroll = numberGenerator.Next(1, 7);

        return firstdiceroll;
    }        

    public void SecondRolledDice()
    {
        Random SecondnumberGenerator;
        SecondnumberGenerator = new Random();
        int seconddiceroll = SecondnumberGenerator.Next(1, 7);

        DiceRoll DR = new DiceRoll();
        var diceroll = DR.RolledDice();

        string NumberName;
        string NumberNameTwo;
        string sum;
        string[] SecondNumberNames;
        SecondNumberNames = new string[12] { "One", "Two", "Three", "Four", "Five", "Six", "seven", "eight", "Nine", "ten", "eleven", "twelve"};

        NumberName = SecondNumberNames[seconddiceroll - 1];
        NumberNameTwo = SecondNumberNames[diceroll - 1];
        sum = SecondNumberNames[(diceroll + seconddiceroll) - 1];

        Console.WriteLine("{0} Plus {1} Equals {2} ", NumberName, NumberNameTwo, sum);         
    }  
从文件:

Random()构造函数使用系统时钟提供种子 价值这是实例化随机数最常用的方法 发电机

如果将同一种子用于单独的随机对象,则它们将 生成相同的随机数序列

另外,从避免多个实例化部分:

在紧循环或快速循环中初始化两个随机数生成器 Sequence创建两个随机数生成器,可以生成 相同的随机数序列。在大多数情况下,这不是问题所在 开发人员的意图和可能导致性能问题,因为 实例化和初始化随机数生成器是一个非常重要的过程 相对昂贵的过程

既可以提高性能,又可以避免 无意中创建单独的随机数生成器,生成 相同的数字序列,建议您创建一个随机序列 对象随时间生成许多随机数,而不是创建 新建随机对象以生成一个随机数

您需要实例化random一次,然后为两个骰子调用
Next
方法。

您的
RolledDice()
方法每次调用时都会重新创建
random
对象,这就是导致生成相同数字的原因


只需声明您的
Random numberGenerator=new Random()一次作为全局变量(为了更好的实践,可能在主方法实例化上创建它),然后重新使用它。

您是否一步一步地完成了代码的编写?在Diceroll的构造函数中初始化numberGenerator为什么
SecondRolledDice()
创建一个新的
骰子卷实例
?您的程序运行速度很快。使用系统时间生成随机数。所以,在没有调试的情况下运行时,您会得到相同的数字。非常感谢您,这是一次绝对的款待!我现在也完全明白了,漂亮,谢谢!乐意帮助:如果这个或任何答案已经解决了你的问题,请考虑点击复选标记。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。