A cellular automaton consists of a regular grid of "cells", each in one of a finite number of "states", such as "on" and "off" (in contrast to a coupled map lattice). The grid can be in any finite number of dimensions. For each cell, a set of cells called its "neighborhood" is defined relative to the specified cell. An initial state (time "t" = 0) is selected by assigning a state for each cell. A new "generation" is created (advancing "t" by 1), according to some fixed "rule" (generally, a mathematical function) that determines the new state of each cell in terms of the current state of the cell and the states of the cells in its neighborhood. Typically, the rule for updating the state of cells is the same for each cell and does not change over time, and is applied to the whole grid simultaneously, though exceptions are known, such as the stochastic cellular automaton and asynchronous cellular automaton.