Проблема в том, что Swiper с включённым loop воспринимает только фактические индексы слайдов, соответствующие количеству слайдов (в вашем случае — от 0 до 9).
Даже если ты передаёшь индекс больше количества слайдов, Swiper всё равно будет ограничивать значение.
Чтобы реализовать вращение на 3 полных круга + случайный индекс, нужно учитывать поведение с loop, а также использовать slideToLoop, который корректно обрабатывает циклическую прокрутку
swiperRef.current.slideToLoop(randomIndex, 2000, 'ease-out');
setTimeout(() => {
setCurrentSlide(randomIndex);
console.log('Выпавший слайд: ', randomIndex);
}, 2000);
И useEffect лишний
потому что он пытался сразу перейти на индекс 30, который не существует
https://jsfiddle.net/fdot6gpe/