Генерация случайных значений без повторений - 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д