2011-04-23 4 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()를 사용하는 것입니다 '두 번 빨리 돌아올거야. –

+0

난수 생성은 배열의 1000 슬롯을 채우기 위해 1에서 1000까지의 숫자를 생성하는 중일 때 충돌을 확인하는 것처럼 보입니다. 충돌이 일어날 확률은 100 %로 증가 할 것입니다. 보다 나은 접근법은 미리 1000 개의 값을 미리 생성 한 다음 임의로 셔플을 수행하는 것입니다. 충돌이없고 성능이 좋습니다. 피셔 - 예이츠 (Fisher-Yates)와 같은 알고리즘을 살펴보십시오. –

답변

1

이 솔루션은() 대신 Console.Read()

관련 문제