Почему при вызове функции из цикла повторяются «случайные» значения?
Random rnd = new Random(); создаёт случайно число на основе текущего времени. Вы вызываете эту функцию много раз подряд, время одинаковое - результаты повторяются.
Нашёл ответ на вопрос "а как было бы сделать правильно":