public override MissionBase Generate()
        {
            int           numOfAnswers = 6;
            List <string> rightAnswers = new List <string>();

            rightAnswers.AddRange(new string[]
            {
                "Процессор",
                "Сетевая карта",
                "Оперативная память",
                "Материнская плата",
                "Видеокарта",
                "Блок питания",
                "Накопитель (дисковод)",
                "ПЗУ"
            });
            List <string> wrongAnswers = new List <string>();

            wrongAnswers.AddRange(new string[]
            {
                "Flash-память",
                "Плоттер",
                "Сканер",
                "Трекбол",
                "Источник бесперебойного питания",
                "Web-камера"
            });

            List <string> answers        = new List <string>();
            List <int>    answerExpected = new List <int>();

            while (true)
            {
                bool isOneRightAnswer = false;
                for (int i = 0; i < numOfAnswers; i++)
                {
                    if (rnd.RandomBool())
                    {
                        isOneRightAnswer = true;
                        for (int j = 0; j < 20; j++)// not to repeat
                        {
                            var toAdd = rightAnswers[rnd.Next(0, rightAnswers.Count)];
                            if (!answers.Contains(toAdd))
                            {
                                answers.Add(toAdd);
                                answerExpected.Add(i);
                                break;
                            }
                        }
                    }
                    else
                    {
                        for (int j = 0; j < 20; j++)
                        {
                            var toAdd = wrongAnswers[rnd.Next(0, wrongAnswers.Count)];
                            if (!answers.Contains(toAdd))
                            {
                                answers.Add(toAdd);
                                break;
                            }
                        }
                    }
                }
                if (isOneRightAnswer)
                {
                    break;
                }
            }
            MissionBase mb = new SelectMission(NumOfMission, MissionName, "Выберать устройства, находящьеся в системном блоке", answers.ToArray(), answerExpected.ToArray());

            return(mb);
        }
        public override MissionBase Generate()
        {
generate:
            int numOfAnswers = 6;

            string[] input =
            {
                "Сканер",
                "Микрофон",
                "Диктофон",
                "Компьютерная мышь",
                "Графический планшет",
                "Джойстик",
                "Геймпад",
                "Трекбол"
            };

            string[] output =
            {
                "Монитор (дисплей)",
                "Принтер",
                "Плоттер",
                "Проектор",
                "Встроенный динамик",
                "Колонки",
                "Наушники"
            };

            tasktype      tasktype = (tasktype)rnd.Next(1, 3);
            List <string> task     = new List <string>();
            List <int>    answer   = new List <int>();

            while (true)
            {
                bool isOneNeedAdded = false;
                for (int i = 0; i < numOfAnswers; i++)
                {
                    if (rnd.RandomBool())
                    {
                        for (int j = 0; j < 20; j++)
                        {
                            string toAdd = input.RandomElement();
                            if (!task.Contains(toAdd))
                            {
                                task.Add(toAdd);
                                if (tasktype == tasktype.input)
                                {
                                    answer.Add(i);
                                    isOneNeedAdded = true;
                                }
                                break;
                            }
                        }
                    }
                    else
                    {
                        for (int j = 0; j < 20; j++)
                        {
                            string toAdd = output.RandomElement();
                            if (!task.Contains(toAdd))
                            {
                                task.Add(toAdd);
                                if (tasktype == tasktype.output)
                                {
                                    answer.Add(i);
                                    isOneNeedAdded = true;
                                }
                                break;
                            }
                        }
                    }
                }
                if (isOneNeedAdded)
                {
                    break;
                }
            }

            if (task.Count != numOfAnswers)
            {
                goto generate;
            }

            MissionBase mb = new SelectMission(NumOfMission, MissionName, "Выберите устройства ввода/вывода", task.ToArray(), answer.ToArray());

            return(mb);
        }