返回两个随机整数的方法总是返回相同的两次

时间:2012-08-26 17:24:39

标签: c# random

我知道如何在VB中执行此操作,但我在C#编码,所以我需要弄清楚如何获得两个不同的radomized整数(1-8),我似乎无法让它工作,我得到同样的结束和甚至更多我尝试更难。我已经阅读了很多,但我找不到更具体的帮助,因为大多数人只想要一个rnd号码,我可以做......很容易;)

我编码的是你没有给我两个不同的数字。

    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数字吗?所以我需要有人帮助我朝着正确的方向前进!

提前感谢任何想法和帮助!!!

//此致

2 个答案:

答案 0 :(得分:5)

不要创建Random的第二个实例,只需使用相同的两个实例。

(默认种子是基于时间的,因此在如此快速地创建两个种子时,它们很可能都具有相同的种子。)

答案 1 :(得分: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。 RNGCryptoServiceProvider示例HERE

中还有一个更好的随机数