2014-06-30 3 views
0

임의의 4 자리 숫자를 반복하지 않고 표시하고 싶습니다. 그리고 링 중에 한 라운드로 응답하고 싶습니다. 첫 번째 라운드가 대답하고 다음 번 여섯 번째 라운드가 응답하면 다음 코드에서 대답합니다. 내가 원한다면 적어도 응답 할 반지를 둘러보십시오.난수 C#

Random Number = new Random(); 
int Num1, Num2, Num3, Num4; 
int Index = 0; 
do 
{ 
    Num1 = NUmber.Next(0, 10); 
    Num2 = NUmber.Next(0, 10); 
    Num3 = NUmber.Next(0, 10); 
    Num4 = NUmber.Next(0, 10); 
    Index++; 
} 
while (Num1==Num2||Num1==Num3||Num1==Num4||Num2==Num3||Num2==Num4||Num3==Num4); 
Console.WriteLine("{0}{1}{2}{3}",Num1,Num2,Num3,Num4); 
Console.WriteLine(Index); 
Console.ReadKey(); 
+1

문법을 수정하십시오. 문의하시는 내용이 명확하지 않습니다. 모든 루프 반복마다 고유 숫자가있는 단일 4 자리 숫자입니까? – Alexander

답변

0

숫자가 고유 한 모든 반복에서 임의의 4 자리 숫자가 필요한 경우 - 셔플 알고리즘 사용을 고려하십시오. 이 방법은 모든 반복의 숫자가 반복 될 수 있지만 숫자가 단일 생성 된 숫자로 반복되지 않습니다.

using System; 
class App 
{ 
    public static void Main() 
    { 
    int[] digits = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 
    var rnd = new Random(); 
    while (true) 
    { 
     int i = 0; 
     Swap(digits,i, rnd.Next(i+1, digits.Length)); i++; 
     Swap(digits,i, rnd.Next(i+1, digits.Length)); i++; 
     Swap(digits,i, rnd.Next(i+1, digits.Length)); i++; 
     Swap(digits,i, rnd.Next(i+1, digits.Length)); i++; 
     Console.WriteLine("{0}{1}{2}{3}", 
      digits[0], digits[1], digits[2], digits[3]); 
     Console.ReadKey(); 
    } 
    } 
    static void Swap(int[] digits, int i, int j) 
    { 
    var t = digits[i]; digits[i] = digits[j]; digits[j] = t; 
    } 
}