2011-04-23 92 views
0

我在玩隨機生成隨機數,我可以讓他們生成,雖然我的console.writeline(randomList [i]);似乎循環兩次,然後顯示兩個結果,它應該只顯示每個循環的一個值,並且用戶必須按任意鍵才能得到下一個結果。有人可以對此有所洞察嗎?謝謝。隨機數顯示2個數字時,它應該只顯示一個

class Program 
{ 
    static void Main(string[] args) 
    { 
     GenerateRandomNumbers(); 
    } 
    private static void GenerateRandomNumbers() 
    { 
     //Initialize an array 
     int[] randomList = new int[1000]; 
     //Initialize an instance of random class 
     Random rnd = new Random(); 
     // integer variable 
     int counter = 0; 
      while (counter < 1000) 
      { 
       //store random num 
       int random = rnd.Next(1, 1001); 

       if (Array.IndexOf(randomList, random) <= 0) 
       { 
        //store random number into Array 
        randomList[counter] = random; 
        counter++; 
       } 
      } 
     //output elements in Array 
     for (int i = 0; i < 1000; i++) 
     { 
      Console.WriteLine(randomList[i]); 
      Console.Read(); 
     } 
     //output number of elements in Array 
     // Console.WriteLine(counter); 
     Console.Read(); 
    } 
+1

一些鍵生成快速連續,這可能導致'Console.Read兩個字符使用到Console.ReadLine()() '快速返回兩次。 – 2011-04-23 01:22:17

+0

至於你的隨機數生成,你似乎正在生成從1到1000的數字,以填充數組中的1000個插槽,檢查一路上的碰撞。你會發現碰撞的機率每增加一次就會上升到接近100%。更好的方法是預先簡單地創建1000個值,然後執行隨機洗牌。沒有碰撞,性能更好。研究諸如Fisher-Yates等算法。 – 2011-04-23 01:29:36

回答

1

的解決方案是在環路代替Console.Read()