ADC as a random number generator

Good day! I decided to talk about a simple and interesting way to get honest random numbers on microcontrollers that do not have a random number generator on board. It is enough that the microcontroller had an ADC and one free input. Details under the cut.
The idea is not new and a lot of people have come to mind. I implemented it in one of my old projects on STM8S003F3, so the code examples will be for this chip, although transferring the code to any other architecture will not be difficult.
The bottom line is that when measuring voltage using the ADC, the least significant bits of the result are most susceptible to noise. We use this fact to our advantage - we will take several measurements and record the least significant bit of the result (as the most “noisy”). Thus, making 8 measurements, you can get a completely random byte.
Deteriorating measurement results as possible. We set the shortest sampling time, and hang the output of the microcontroller, on which the ADC input is located, “in the air”, without pulling it up anywhere and not connecting to anything. The more noise, the better.
ADC initialization:
CLK_PCKENR2 |= 0x08; //Подаём тактирование на АЦП
ADC_CR1 = MASK_ADC_CR1_ADON; //Включение
ADC_CR2 = MASK_ADC_CR2_ALIGN;
ADC_CR3 = 0;
ADC_CSR = 4; //Выбор канала
Random Byte Receive Function:
unsigned char GetRandom(void) {
unsigned char i, result;
result = 0;
for (i = 0; i < 8; i++) {
ADC_CR1 = MASK_ADC_CR1_ADON; //Старт преобразования
while (ADC_CSR == 4); //Ждём установки флага окончания преобразования
result = (result << 1) + (ADC_DRL & 0x01);
ADC_CSR = 4; //Сбрасываем флаг окончания преобразования
}
return result;
}
Here is such a little trick. I recovered the code from memory, so there may be errors - please write about them in the LAN.
I would be very glad the opinion of experienced people about this method of obtaining random numbers.