Nothing can be TOTALLY random. But aspects of selection can take in many seperately varying factors and put them together somehow to make something random.
If you draw numbers out of a hat, it is seemingly random. However, the slip of paper you pick out depends on how you shuffled all the numbers in the hat. And then the human mind can semi-randomly choose one of them that is near the top. There is no plausable way to calculate what was chosen, but it is not COMPLETELY random. There is some basis. Thinking this way makes me wonder whether there is truly no such thing as a random number. Except perhaps the human mind. We cannot know how that works...and whether randomization is possible.
Ok. Listen to this possibility of a random number generator using a variety of variables. All of these together will make it seem random. (this is a random thought out of my head...it is not real, though I'm quite sure it is quite possible).
My imaginary unnecessarily complicated random number generator:
The computer takes the time off the internal clock. For example, 6:58:26. It stores the seconds of that moment (the moment when asked to generate the number) temporarily and uses "6.58". For 6.58 seconds the primary hard drive (and the top platter) is spun from the point it was when "generate" was pressed. The computer records the outer sector number it lands on. It multiplies that number by the number of seconds from the clock it recorded earlier (26, remember?). Now it divides that result by the clock seconds that were recorded the computer user logged on (yes...OSes often do record that). Now the hour you logged on, is taken as a decimal again (let us say you logged on at 5:27:12, the number we used as the divisor is 12, and the number I'm trying to get now as a decimal is 5.27). So 5.27 is multiplied by the number of packets that have been transfered on all networks (if none, it just takes 5.27) and this new number is added to our main total. Now the generator tells you "done" and there is a button that says "view". At this moment, the generator records the pixels that the mouse travels to get to the "view" button. The total number is taken to the exponent of the number of pixels. Now during the fraction of a second the computer takes to display the number, it multiplies the number by ten(to the necessary exponent) to bring it within the requested range. Should the number be negetive when not requested, it can easily be inverted to be made positive. Should any amount decimals not be requested the generator can in this moment round the number off as necessary.
Simple, eh? Please feel free to point out the many flaws. This was freestyle...improvisation...I just did it now on the spot, so there are bound to be inconsistancies or impossibilities.