Как выбрать случайным образом, но одинаково все элементы в C#
Дорогие Все,
У меня есть приложение Windows для тестирования. Где я должен выбирать вопросы(элементы) случайным образом, и он выбирает случайным образом, но не все вопросы.
Всякий раз, когда я выбираю некоторые вопросы случайным образом, я сохраняю их в базе данных, где некоторые элементы выбираются больше, чем элементы, которые выбираются только 1 или два раза.
Я хочу выбирать элементы случайным образом, но они должны быть выбраны одинаково друг с другом.
Например, если у меня есть 100 предметов и я выбрал предметы случайным образом 10 раз, значит, все предметы должны быть выбраны одинаково.
Что я уже пробовал:
List<QuestionInfo> allQuestions = QuestionController.Instance.GetByOutcome(outcome.ID).ToList(); List<QuestionInfo> outcomeQuestions = allQuestions.Cast<QuestionInfo>().ToList(); int outcomeQuestionNumber = (outcome.PercentageOfQuestions ?? 0) * module.TotalQuestions / 100; if (outcomeQuestionNumber == 0) notConsideredOutcomeList.Add(outcome.ID); if (outcomeQuestions.Count < outcomeQuestionNumber) throw new Exception("Something wrong in generating questions. Not enough questions in Outcome :" + outcome.NameEN); List<QuestionInfo> easyQuestions = outcomeQuestions.FindAll(item => item.DifficultyLevel.DifficultyLevel == DifficultyLevel.Easy).ToList(); List<QuestionInfo> mediumQuestions = outcomeQuestions.FindAll(item => item.DifficultyLevel.DifficultyLevel == DifficultyLevel.Medium).ToList(); List<QuestionInfo> hardQuestions = outcomeQuestions.FindAll(item => item.DifficultyLevel.DifficultyLevel == DifficultyLevel.Hard).ToList(); int easyQuestionsNumber = outcomeQuestionNumber * module.ModuleQuestionDifficultyLevel.FindAll(item => item.DifficultyLevel == DifficultyLevel.Easy).FirstOrDefault().PercentageOfQuestions / 100; int mediumQuestionsNumber = outcomeQuestionNumber * module.ModuleQuestionDifficultyLevel.FindAll(item => item.DifficultyLevel == DifficultyLevel.Medium).FirstOrDefault().PercentageOfQuestions / 100; int hardQuestionsNumber = outcomeQuestionNumber * module.ModuleQuestionDifficultyLevel.FindAll(item => item.DifficultyLevel == DifficultyLevel.Hard).FirstOrDefault().PercentageOfQuestions / 100; if (easyQuestions.Count < easyQuestionsNumber) throw new Exception("Something wrong in generating questions. Not enough easy questions in Outcome :" + outcome.NameEN); if (mediumQuestions.Count < mediumQuestionsNumber) throw new Exception("Something wrong in generating questions. Not enough medium questions in Outcome :" + outcome.NameEN); if (hardQuestions.Count < hardQuestionsNumber) throw new Exception("Something wrong in generating questions. Not enough hard questions in Outcome :" + outcome.NameEN); for (int count = 0; count < easyQuestionsNumber; count++) { int randomIndex = new Random().Next(0, easyQuestions.Count - 1); questions.Add(easyQuestions[randomIndex]); easyQuestions.Remove(easyQuestions[randomIndex]); } for (int count = 0; count < mediumQuestionsNumber; count++) { int randomIndex = new Random().Next(0, mediumQuestions.Count - 1); questions.Add(mediumQuestions[randomIndex]); mediumQuestions.Remove(mediumQuestions[randomIndex]); } for (int count = 0; count < hardQuestionsNumber; count++) { int randomIndex = new Random().Next(0, hardQuestions.Count - 1); questions.Add(hardQuestions[randomIndex]); hardQuestions.Remove(hardQuestions[randomIndex]); } processedQuestions.AddRange(easyQuestions); processedQuestions.AddRange(mediumQuestions); processedQuestions.AddRange(hardQuestions);
Кто-нибудь может пожалуйста помочь мне.
Спасибо