Случайные вопросы

167
28 июля 2019, 20:30

Как можно реализовать с помощью генератора случайных вопросов считывания с файла *.xml, для теста? Чтобы вопросы не шли по порядку, а в случайном порядке.

У меня есть 2 метода, они без проблем работают, только вопросы считываются по порядку:

private void ShowDescription()
{
    do
    {
        xmlReader.Read();
    } while (xmlReader.Name != "description");
    xmlReader.Read();
    NameQQ.Text = xmlReader.Value;
    xmlReader.Read();
    do
    {
        xmlReader.Read();
    } while (xmlReader.Name != "qw");
    xmlReader.Read();
    BtnFurther.Text = "Ок";
}
private Boolean GetQw()
{
    xmlReader.Read();
    if (xmlReader.Name == "q")
    {
        qw = xmlReader.GetAttribute("text");
        xmlReader.Read();
        int i = 0;
        while (xmlReader.Name != "q")
        {
            xmlReader.Read();
            if (xmlReader.Name == "a")
            {
                if (xmlReader.GetAttribute("right") == "yes")
                    right = i;
                xmlReader.Read();
                if (i < 4) anws[i] = xmlReader.Value;
                xmlReader.Read();
                i++;
            }
        }
        xmlReader.Read();
        return true;
    }
    else
    {
        return false;
    }
}

Файл содержит в нем вопросы и варианты ответа:

Answer 1

Как вам уже сказали в комментариях-наиболее простым будет решение со считыванием всех вопросов в память, так как я не думаю, что файл у вас имеет большой размер.

Ну а потом просто сделать перемешивание каким-нибудь вот таким образом:

var rnd=new Random();
var list = questions.Select(q => new {Rand = rnd.Next(questions.Length), q})
                    .OrderBy(x => x.Rand)
                    .Select(x => x.q)
                    .ToList();
READ ALSO
Как работает spl_autoload_register?

Как работает spl_autoload_register?

В документации написано, что одним из аргументов spl_autoload_register передаётся функция autoloadОбъясните подробно, как работает функция spl_autoload_register...

120
Чем заменить mysql_num_rows

Чем заменить mysql_num_rows

Ранее работало вот это

136
Не могу установить расширение mbstring

Не могу установить расширение mbstring

При установке phpunit через composer получаю следующую ошибку

147