/// Creates a new PRNG. The two inputs, seed and increment,
/// determine what you get; increment basically selects which
/// sequence of all those possible the PRNG will produce, and the
/// seed selects where in that sequence you start.
/// Both are arbitrary; increment must be an odd number but this
pub fn new_inc(seed: u64, increment: u64) -> Self {
inc: increment.wrapping_shl(1) | 1,
// This initialization song-and-dance is a little odd,
// but seems to be just how things go.
rng.state = rng.state.wrapping_add(seed);