Генерация случайных значений без повторений - 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы