Electronic – Randomization of events in old hand-held games

digital-logicrandom number

I have very little background on electronic design.

After studying a bit on how pseudo-random number generators work on general purpose computers, I became curious on how old hand-held games (like the Mattel Electronics series) randomized the events occurring in the game. As far as I know, many of them didn't utilize microprocessors at all.

Did they occupy a pseudo-random number algorithm implemented with basic electronic components, or are there ways of producing random-like numbers with basic electronic components? If such ways exist, why are they not available on our general purpose computers?

The main reason for my question stems from the need to seed the random number generator. Those primitive handheld games didn't seem to have a clock or something that could act as a seed (or perhaps they had a seeding counter running even if the game was turned off but connected to the battery?)

Best Answer

From the older machines that I have looked at, often a clock was kept running via a small cell battery. And the time on that clock at start up was checked and used for various calculations. I'll try to dig up a concrete example when I get home from work!

Edit:

One common way of implementing this was through the classic 555 timer chip, circia 1971 (Either the IC or designing one with electronic components) An explanation of the chip can be found here:

http://en.wikipedia.org/wiki/555_timer_IC

This chip can typically be found in any hobbyists toolbox, but how do we use this chip to generate random numbers? The short answer is that we cannot, we must use this in conjunction with other coutning circuits etc. While today these can be found in convenient IC packages, they can be recreated with common components. I tried to prepare a good example, but managed to find a much better one online! An example of such can be found/explained here:

http://www.engineersgarage.com/electronic-circuits/random-number-generator-using-7-segment-display

Hope this helps! :)