Here's the principle: We compute one line after another,
and to know the new living/dead state of a cell, we check
the previous state of it and both its neighbours. Let's mark
* a living cell and . a dead
one. Then we have 8 possibilities (with a lot so symmetries though) according to neighbours:
*** : center cell will live with probability p1
*.* : center cell will live with probability p2
**. : center cell will live with probability p3
.** : center cell will live with probability p3
..* : center cell will live with probability 1-p3
*.. : center cell will live with probability 1-p3
.*. : center cell will live with probability 1-p2
... : center cell will live with probability 1-p1
The probabilities are linearily interpolated between the 3 values on top to the 3 values on the bottom (0 or 1 only
on those extremities).