Генерация случайных значений без повторений - C#
Формулировка задачи:
Всем привет! У меня проблема, надо рандомно раскидать 4 переменных без повторений, как это можно реализовать? Пока попробовал так, но прога за 15 минут так и не запустилась
int answer1 = 0; int answerss2 = 0; int answerss3 = 0; int answerss4 = 0; int x = 1; Random i = new Random((int)(DateTime.Now.Ticks)); metka: int value1 = i.Next(5); switch (value1) { case 1: if (answer1 != 1) { switch (x) { case 1: randomanw1 = trueanswer1; ++x; ++answer1; break; case 2: randomanw1 = answer2; ++x; ++answerss2; break; case 3: randomanw1 = answer3; ++x; ++answerss3; break; default: randomanw1 = answer4; ++x; ++answerss4; break; } } else break; break; case 2: if (answerss2 != 1) { switch (x) { case 1: randomanw2 = trueanswer1; ++x; ++answer1; break; case 2: randomanw2 = answer2; ++x; ++answerss2; break; case 3: randomanw2 = answer3; ++x; ++answerss3; break; case 4: randomanw2 = answer4; ++x; ++answerss4; break; } } else { break; } break; case 3: if (answerss3 != 1) { switch (x) { case 1: randomanw3 = trueanswer1; ++x; ++answer1; break; case 2: randomanw3 = answer2; ++x; ++answerss2; break; case 3: randomanw3 = answer3; ++x; ++answerss3; break; case 4: randomanw3 = answer4; ++x; ++answerss4; break; } } else { break; } break; case 4: if (answerss4 != 1) { switch (x) { case 1: randomanw4 = trueanswer1; ++x; ++answer1; break; case 2: randomanw4 = answer2; ++x; ++answerss2; break; case 3: randomanw4 = answer3; ++x; ++answerss3; break; case 4: randomanw4 = answer4; ++x; ++answerss4; break; } } else { break; } break; default: break; } if (answer1 == 0 || answerss2 == 0 || answerss3 == 0 || answerss4 == 0 || x != 4) goto metka;
Решение задачи: «Генерация случайных значений без повторений»
textual
Листинг программы
List<int> RandomizeAnswers(List<int> answers) { var answersCopy = new List<int>(answers); var randomAnswers = new List<int>(answers.Count); var rnd = new Random(); while (answersCopy.Count > 1) { int idx = rnd.Next(0, answersCopy.Count); randomAnswers.Add(answersCopy[idx]); answersCopy.RemoveAt(idx); } randomAnswers.Add(answersCopy[0]); return randomAnswers; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д