Quello che stai facendo è valido:ordinerà i risultati in ordine decrescente per a
ma randomizza l'ordine dei pareggi.
Tuttavia, per fare ciò che vuoi devi prima utilizzare una sottoquery per ottenere gli ultimi 100 record e quindi ordinare i risultati di quella sottoquery in modo casuale utilizzando una query esterna:
SELECT * FROM
(
SELECT * FROM table1
ORDER BY date DESC
LIMIT 100
) T1
ORDER BY RAND()