Żeby było bez powtórzeń, musisz gdzieś zapamiętać, które pytania już były wylosowane.
Najwygodniej będzie ci załadować zestawy pytań do listy i wymieszać.
using System;
using System.Collections.Generic;
namespace ConsoleApp1
{
public class Question
{
public Question(string p1, string p2, string p3, string p4, string a)
{
prompt1 = p1;
prompt2 = p2;
prompt3 = p3;
prompt4 = p4;
answer = a;
}
public override string ToString()
{
return "a) " + prompt1 + "\nb) " + prompt2 + "\nc) " + prompt3 + "\nd) " + prompt4 + "\n" + answer + "\n";
}
private string prompt1;
private string prompt2;
private string prompt3;
private string prompt4;
private string answer;
}
class Program
{
static void Main(string[] args)
{
List<Question> l = new List<Question>();
l.Add(new Question("q1prompt1", "q1prompt2", "q1prompt3", "q1prompt4", "q1answer"));
l.Add(new Question("q2prompt1", "q2prompt2", "q2prompt3", "q2prompt4", "q2answer"));
l.Add(new Question("q3prompt1", "q3prompt2", "q3prompt3", "q3prompt4", "q3answer"));
l.Add(new Question("q4prompt1", "q4prompt2", "q4prompt3", "q4prompt4", "q4answer"));
l.Add(new Question("q5prompt1", "q5prompt2", "q5prompt3", "q5prompt4", "q5answer"));
l.Add(new Question("q6prompt1", "q6prompt2", "q6prompt3", "q6prompt4", "q6answer"));
PrintList(l);
Console.WriteLine();
Shuffle(l);
PrintList(l);
Console.WriteLine();
}
private static Random rng = new Random();
public static void Shuffle<T>(IList<T> list)
{
int n = list.Count;
while (n > 1)
{
n--;
int k = rng.Next(n + 1);
T value = list[k];
list[k] = list[n];
list[n] = value;
}
}
public static void PrintList<T>(IList<T> list)
{
foreach(T el in list)
{
Console.WriteLine(el.ToString());
}
}
}
}
https://ideone.com/B8n5Im
... i teraz piszesz jakąś logikę zadawania pytań.
Zadajesz kolejno pytania z wymieszanej listy póki user odpowiada prawidłowo.