Я работаю над простым shuffle сценарием . У меня есть общий метод, который принимает в качестве входных данных List<T>
и возвращает List<T>
. Возвращенное List
должно быть перемешано . Однако код застрял в бесконечном цикле , и я не уверен, почему .
Вот мой код:
private List<T> Shuffle<T>(List<T> p)
{
List<T> result = new List<T>();
int idx = 0;
while (p.Count > 0)
{
idx = Random.Range(0, p.Count);
print(idx);
result.Add(p[idx]);
p.Remove(p[idx]);
}
print("Shuffled");
return result;
}
Я ожидаю, что код будет работать, поскольку p.Count
продолжает уменьшаться . Однако, это застревает . Вот альтернатива выполненному мною циклу while
, который работает, но выглядит немного неряшливо:
for (int i = 0; i < p.Count; i++)
{
idx = Random.Range(0, p.Count);
print(idx);
result.Add(p[idx]);
p.Remove(p[idx]);
}
Это скорее вопрос «почему» , чем проблема, но явсе еще надеюсь, что ты сможешь мне помочь. Заранее спасибо!