Ну ... я бы сделал это в двух запросах.Получить случайные номера строк:
SELECT
floor(count * rand()) r1,
floor(count * rand()) r2,
floor(count * rand()) r3,
floor(count * rand()) r4
FROM
(SELECT count(*) count FROM cardb WHERE type = 'new') c
И получить строки:
SELECT car, price, thumbnail FROM cardb WHERE type = 'new' LIMIT {r1}, 1
UNION ALL
SELECT car, price, thumbnail FROM cardb WHERE type = 'new' LIMIT {r2}, 1
UNION ALL
SELECT car, price, thumbnail FROM cardb WHERE type = 'new' LIMIT {r3}, 1
UNION ALL
SELECT car, price, thumbnail FROM cardb WHERE type = 'new' LIMIT {r4}, 1