簡體   English   中英

我的代碼只能在“進入”中正常運行,而不能正常運行

[英]My code only works properly in 'step into' and not normally

基本上我希望我的代碼生成兩個隨機數,然后等於它們。 當我進入但不是正常情況下,它應該如何運作,而我無法為自己的生活弄清楚原因! 當我正常運行它時,這兩個數字總是相同的,但是當我進入程序時,它們是不同的。 我希望他們都是隨機的。 如果有幫助,我正在使用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);         
    }  

System.Random文檔中:

Random()構造函數使用系統時鍾來提供種子值。 這是實例化隨機數生成器的最常見方法。

如果將相同的種子用於單獨的隨機對象,則它們將生成相同系列的隨機數。

另外,從避免多重實例化部分:

以緊密循環或快速連續方式初始化兩個隨機數生成器會創建兩個隨機數生成器,它們可以產生相同的隨機數序列。 在大多數情況下,這不是開發人員的意圖,並且可能導致性能問題,因為實例化和初始化隨機數生成器是一個相對昂貴的過程。

為了提高性能並避免無意間創建單獨的隨機數生成器以生成相同的數字序列,我們建議您創建一個隨機對象以隨時間推移生成許多隨機數,而不是創建新的隨機對象以生成一個隨機數。

您需要實例化隨機一次,然后為兩個骰子調用Next方法。

您的RolledDice()方法在每次調用它時都會重新創建Random對象,這就是導致生成相同數字的原因。

只需聲明您的Random numberGenerator = new Random(); 一次作為全局變量(也許,為了良好實踐,可以在主方法實例化上創建它),然后重用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM