probcomp/crosscat

associate random seed with each model

Opened this issue · 1 comments

Rather than use a random seed in the `engine', Crosscat should store a random seed in each model, and the state transitions performed by LocalEngine and MultiprocessingEngine should be the same given the same seed in the model. That way, the only source of nondeterminism in Crosscat will be the initial selection of random seeds, which can be provided entirely by the caller, and LocalEngine and MultiprocessingEngine will yield exactly the same results for the same inputs.

Crosscat currently uses the boost Mersenne Twister for most everything. Should be replaced by a small-state PRNG, e.g. one built on ChaCha.