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 Random) для применения случайный порядок набора ответов и, после заказа, назначить ответы кнопкам. Если вам нужен менее расплывчатый ответ, пожалуйста, покажите нам, что у вас есть. :) –

ответ

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); 
Смежные вопросы