Silicon Labs’ application note (PDF!) on improving ADC resolution by oversampling and averaging:
This application note describes utilizing oversampling and averaging to increase the resolution and SNR of analog-to-digital conversions. Oversampling and averaging can increase the resolution of a measurement without resorting to the cost and complexity of using expensive off-chip ADCs.
This application note discusses how to increase the resolution of analog-to-digital (ADC)measurements by oversampling and averaging. Additionally, more in-depth analysis of ADC noise, types ofADC noise optimal for oversampling techniques, and example code utilizing oversampling and averaging is provided in appendices A, B, and C respectively at the end of this document.
I managed to get oversampling working well on cheap Arduino promini clones. Turns out all you have to do is toggle a digital pin connected to ground with the right size resistor to generate enough noise for the technique to work.
https://edwardmallon.wordpress.com/2017/02/27/enhancing-arduinos-adc-resolution-by-dithering-oversampling/