Если у вас нет тонны строк, вы можете просто:
SELECT * FROM myTable ORDER BY RAND() LIMIT 3;
Если у вас много строк, это будет медленным, но для небольших наборов данных это будет работать нормально.
Как Стив Мишель упоминает в своем ответе, этот метод может быть очень уродливым для больших столов. Его предложение - хорошее место, с которого можно спрыгнуть. Если вы знаете приблизительное максимальное целое число PK в таблице, вы можете сделать что-то вроде генерации случайного числа между одним и вашим максимальным значением PK, а затем получить случайные строки по одной за раз, например:
$q="SELECT * FROM table WHERE id >= {$myRandomValue}";
$row = $db->fetchOne($q); //or whatever CI's interface to grab a single is like
Конечно, если вам нужно 3 случайных строки, у вас здесь будет три запроса, но, поскольку они целиком и полностью связаны с ПК, они будут быстрыми (не то, что рандомизирует всю таблицу).