
     reserve memory
           |
           V
 fill with initial value 
(better get some good seed or keep it in nonvolatile memory)
           |
           V
   when called, shufle; that means
           |
           V
 get the bits at the tap positions and xor them together
           |
           V
   shift the whole array 1 bit to the left
           |
           V
  store the new bit at the rightmost position         
           |
           V
       use the result (the new bit you just created)

