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();
}
일부 키는'Console.Read의 원인이 빠르게 연속, 두 캐릭터를 생성의 루프에서 Console.ReadLine()를 사용하는 것입니다 '두 번 빨리 돌아올거야. –
난수 생성은 배열의 1000 슬롯을 채우기 위해 1에서 1000까지의 숫자를 생성하는 중일 때 충돌을 확인하는 것처럼 보입니다. 충돌이 일어날 확률은 100 %로 증가 할 것입니다. 보다 나은 접근법은 미리 1000 개의 값을 미리 생성 한 다음 임의로 셔플을 수행하는 것입니다. 충돌이없고 성능이 좋습니다. 피셔 - 예이츠 (Fisher-Yates)와 같은 알고리즘을 살펴보십시오. –