Генерация случайных значений без повторений - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет! У меня проблема, надо рандомно раскидать 4 переменных без повторений, как это можно реализовать? Пока попробовал так, но прога за 15 минут так и не запустилась
Листинг программы
  1. int answer1 = 0;
  2. int answerss2 = 0;
  3. int answerss3 = 0;
  4. int answerss4 = 0;
  5. int x = 1;
  6. Random i = new Random((int)(DateTime.Now.Ticks));
  7. metka:
  8. int value1 = i.Next(5);
  9. switch (value1)
  10. {
  11. case 1:
  12. if (answer1 != 1)
  13. {
  14. switch (x)
  15. {
  16. case 1:
  17. randomanw1 = trueanswer1;
  18. ++x;
  19. ++answer1;
  20. break;
  21. case 2:
  22. randomanw1 = answer2;
  23. ++x;
  24. ++answerss2;
  25. break;
  26. case 3:
  27. randomanw1 = answer3;
  28. ++x;
  29. ++answerss3;
  30. break;
  31. default:
  32. randomanw1 = answer4;
  33. ++x;
  34. ++answerss4;
  35. break;
  36. }
  37. }
  38. else
  39. break;
  40. break;
  41. case 2:
  42. if (answerss2 != 1)
  43. {
  44. switch (x)
  45. {
  46. case 1:
  47. randomanw2 = trueanswer1;
  48. ++x;
  49. ++answer1;
  50. break;
  51. case 2:
  52. randomanw2 = answer2;
  53. ++x;
  54. ++answerss2;
  55. break;
  56. case 3:
  57. randomanw2 = answer3;
  58. ++x;
  59. ++answerss3;
  60. break;
  61. case 4:
  62. randomanw2 = answer4;
  63. ++x;
  64. ++answerss4;
  65. break;
  66. }
  67. }
  68. else
  69. {
  70. break;
  71. }
  72. break;
  73. case 3:
  74. if (answerss3 != 1)
  75. {
  76. switch (x)
  77. {
  78. case 1:
  79. randomanw3 = trueanswer1;
  80. ++x;
  81. ++answer1;
  82. break;
  83. case 2:
  84. randomanw3 = answer2;
  85. ++x;
  86. ++answerss2;
  87. break;
  88. case 3:
  89. randomanw3 = answer3;
  90. ++x;
  91. ++answerss3;
  92. break;
  93. case 4:
  94. randomanw3 = answer4;
  95. ++x;
  96. ++answerss4;
  97. break;
  98. }
  99. }
  100. else
  101. {
  102. break;
  103. }
  104. break;
  105. case 4:
  106. if (answerss4 != 1)
  107. {
  108. switch (x)
  109. {
  110. case 1:
  111. randomanw4 = trueanswer1;
  112. ++x;
  113. ++answer1;
  114. break;
  115. case 2:
  116. randomanw4 = answer2;
  117. ++x;
  118. ++answerss2;
  119. break;
  120. case 3:
  121. randomanw4 = answer3;
  122. ++x;
  123. ++answerss3;
  124. break;
  125. case 4:
  126. randomanw4 = answer4;
  127. ++x;
  128. ++answerss4;
  129. break;
  130. }
  131. }
  132. else
  133. {
  134. break;
  135. }
  136. break;
  137. default:
  138. break;
  139. }
  140. if (answer1 == 0 || answerss2 == 0 || answerss3 == 0 || answerss4 == 0 || x != 4)
  141. goto metka;

Решение задачи: «Генерация случайных значений без повторений»

textual
Листинг программы
  1. List<int> RandomizeAnswers(List<int> answers)
  2. {
  3.     var answersCopy = new List<int>(answers);
  4.     var randomAnswers = new List<int>(answers.Count);
  5.     var rnd = new Random();
  6.     while (answersCopy.Count > 1)
  7.     {
  8.         int idx = rnd.Next(0, answersCopy.Count);
  9.         randomAnswers.Add(answersCopy[idx]);
  10.         answersCopy.RemoveAt(idx);
  11.     }
  12.     randomAnswers.Add(answersCopy[0]);
  13.     return randomAnswers;
  14. }

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


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

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

14   голосов , оценка 4.071 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы