Я пишу приложение для игры в мелочи в C#, где пользователь должен выбрать 5 случайно выбранных мелочей из набора из 20 доступных вопросов.Как я могу гарантировать, что одинаковые случайные числа не будут выбраны каждый раз в C#?
Я использую этот код для создания индекса, что приложение будет использовать для выборки вопросов:
private void GenerateRandomNumbers(int RandomIndex)
{
Random rand = new Random();
HashSet<int> check = new HashSet<int>();
for (int i = 1; i < RandomIndex; i++)
{
int curValue = rand.Next(1, RandomIndex);
while (check.Contains(curValue))
{
curValue = rand.Next(1, RandomIndex);
}
ChosenQuestions.Add(Questions[curValue]);
check.Add(curValue);
}
check.Clear();
}
Проблема заключается в том, что, когда пользователь играет в игру во второй раз (нажав на кнопку «ИГРАТЬ СНОВА»), и вышеуказанный код выполняется снова, он продолжает выбирать одинаковые случайные числа, хотя они не обязательно в одном порядке. это заставляет выбирать одинаковые мелочи. Я хочу новый новый набор абсолютно случайных чисел каждый раз, когда выполняется вышеуказанный код. Как я могу изменить код, чтобы выполнить это?
ПРИМЕЧАНИЕ. Я скопировал этот код из другого места здесь, в Stack Overflow, так что это не мой собственный оригинальный код.
Конечно, он выбирает те же номера, что и у одного и того же диапазона, и вы проверяете, содержится ли это число, и если вы его снова генерируете ?! – Hristo
Если вы хотите, чтобы другое значение определяло другой диапазон. – Hristo
Если вы не измените значение RandomIndex между двумя вызовами, вы всегда получите случайное число между 1 и RandomIndex.Я предлагаю передать также нижний предел – Steve