Computers cannot generate truly random numbers; they produce pseudorandom numbers based on deterministic algorithms. In C++, functions like rand() and srand() utilize an internal state seeded by values such as the current time. True randomness can be achieved through hardware methods, which gather entropy from physical processes, like using a Geiger counter. The discussion highlights the limitations of deterministic machines, emphasizing that while algorithms can generate sequences that appear random, they ultimately rely on initial seed values that are not truly random. Thus, any output from these systems remains pseudorandom, constrained by the machine's finite memory and processing capabilities.