A deterministic program cannot create randomness from nothing
A conventional computer follows exact instructions. If its memory and starting conditions are identical, it will perform the same operations and produce the same result. So a program that begins with a fixed internal state cannot simply choose a genuinely unpredictable number: its answer is already determined by that state.
Most computer-generated “random” numbers come from a pseudorandom number generator. This is an algorithm that turns a starting value, or seed, into a long sequence that looks irregular. A good sequence is useful for games, simulations, and many everyday tasks, but someone who knows the algorithm and seed can reproduce it. The numbers are unpredictable only to the extent that the seed or internal state is hidden.
Where genuine unpredictability can enter
A computer can use measurements of physical processes as input—such as electronic noise or tiny variations in timing. These measurements are not perfectly controlled, so they can supply uncertainty that a deterministic calculation alone lacks. Hardware or operating-system components collect and process such input, then use it to seed or refresh a generator.
That distinction matters: the algorithm spreads uncertainty; it does not make uncertainty appear. If a system starts with too little unpredictable input, its output may look random while remaining guessable. For security-sensitive uses, computers therefore need a dependable source of physical entropy—the technical term for measurable uncertainty—and must protect the state built from it.
So the limitation is not that a computer can never produce a truly random number. It is that a purely deterministic program, given only a fixed starting state, cannot do so. The machine needs some unpredictable physical input before its calculations can turn that uncertainty into numbers.






