Описанный алгоритм довольно плох, потому что он просматривает новый массив для каждой новой записи.Это означает, что он должен искать все больше и больше данных по мере роста массива, и, что еще хуже, по мере уменьшения количества оставшихся элементов, он будет заканчиваться циклом больше.
Например, если у вас есть список из 1… 10, когда вы заполнили восемь элементов, осталось только два элемента (скажем, 7 и 9), теперь каждый раз, когда вы генерируете случайное число, оно генерирует неуникальное число в 80% случаев и имеетсканировать по крайней мере шесть записей, прежде чем обнаруживать дубликат.
Возможно, в некоторых библиотеках есть даже лучшие методы, но лучшим способом, чем в вопросе, было бы создать (связанный) список элементов,выберите один наугад, удалите и добавьте его в новый список.Таким образом, каждый раз, когда вы выбираете один случайный, он гарантированно будет уникальным, потому что использованных больше нет в пуле.