2012-04-12 2 views
2

저는 WPF에서 아이들을위한 퀴즈를 만들고 있습니다.무작위로 버튼의 내용을 지정하십시오.

모든 질문은 데이터베이스에서 제공됩니다.

인터페이스에는 질문에 대한 텍스트 블록과 객관식 답변에 대한 네 개의 버튼이 있습니다.

버튼의 내용을 무작위로 지정하여 정답이 항상 같은 버튼에 나타나지 않게하려면 어떻게해야합니까?

+0

의 중복 가능성 [SQL에서 임의의 행을 요청하는 방법?] (http://stackoverflow.com/questions/19412/how-to-request-a-random-row-in-sql) – BrokenGlass

+0

간단히 말해, 난수 생성기 (예 : .NET 임의 클래스)를 사용하여 응답 집합에 무작위 순서를 지정하고 명령을 받으면 단추에 응답을 할당합니다. 덜 모호한 답을 원하면 지금까지 얻은 것을 보여주십시오. :) –

답변

3

:

당신이 사용할 수있는 임의의 숫자를 얻으려면

List<string> Shuffle(List<string> answers) 
    { 
     Random r = new Random(); 
     Dictionary<int, string> d = new Dictionary<int, string>(); 
     foreach (var answer in answers) 
     { 
      d.Add(r.Next(), answer); 
     } 
     return d.OrderBy(a => a.Key).Select(b => b.Value).ToList(); 
    } 
+0

그럼에도 불구하고 더 좋은 셔플 알고리즘을 찾을 수는 있지만 좋은 대답입니다. – Servy

+0

@Servy, 실제로 그것은 단지 아이디어입니다 – ionden

+0

@ionden은 완벽하게 작동합니다. – Noelle

2

본질적으로 정답의 위치로 0과 3 사이의 난수를 생성하면됩니다. 그런 다음 데이터베이스의 순서대로 나머지 응답을 표시하십시오. 당신은 응답을 임의로 재생하도록하는 방법을 사용할 수

var placeHolder = new Random().Next(0,3); 
관련 문제