0

私はVBでこれを行う方法を知っていますが、C#でコーディングしているので、2つの異なるradomized整数(1 - 8)を取得する方法を理解する必要があります.頑張るほど。私は多くのことを読みましたが、ほとんどの人が1つのrnd番号を望んでいるので、より具体的なヘルプを見つけることができず、私はそれを行うことができます...簡単です;)

私がコーディングしたのは、これが 2 つの異なる数字を与えないということです。

    public string GetFruitCombination()
    {
        Random fruitcombo = new Random();
        int indexone = fruitcombo.Next(0, 8);
        Random fruitcombotwo = new Random();
        int indextwo = fruitcombotwo.Next(0, 8);

        string firstfruit = m_fruit[indexone];
        string secondfruit = m_fruit[indextwo];

        return string.Format("{0}&{1}", firstfruit, secondfruit);
    }

2 つの異なる rnd 番号を正しく取得する簡単な方法があるに違いありません。だから私は正しい方向に私を押してくれる人が必要です!

アイデアと助けを事前にありがとう!!!

//よろしく

4

2 に答える 2

5

の 2 番目のインスタンスを作成しないでくださいRandom。同じインスタンスを 2 回使用してください。

(デフォルトのシードは時間ベースであるため、2 つをすばやく作成すると、両方が同じシードを持つ可能性が高くなります。)

于 2012-08-26T17:25:38.387 に答える
2
   public string GetFruitCombination() 
    { 
        Random fruitcombo = new Random(Environment.TickCount); 
        int indexone = fruitcombo.Next(0, 8); 
        int indextwo = fruitcombo.Next(0, 8); 

        string firstfruit = m_fruit[indexone]; 
        string secondfruit = m_fruit[indextwo]; 

        return string.Format("{0}&{1}", firstfruit, secondfruit); 
    } 

個人的には Random の静的バージョンを使用しているため、シードは起動時に設定され、使用するたびに Nexted になります。HEREのRNGCryptoServiceProviderの例にもより良いランダムがあります

于 2012-08-26T17:47:28.497 に答える