That makes sense.

That would have been clearer to me from the API if it had read
```
# choose particular encoders and simulator rng state.
model.simulator(seed=123)

# do what Trevor was talking about
model.simulator(seed={'build':123, 'simulate':55})
```

The idea that model has a seed attribute seems confusing to me in
conjunction with this new simulator call signature.

(Incidentally, I think the default seed of the `Model.simulator` method
should come from an environment variable... is that related?)



On Wed, Oct 16, 2013 at 12:33 PM, Trevor Bekolay
<notifications@github.com>wrote:

> In nengo/model.py:
>
> > @@ -212,6 +220,15 @@ def simulator(self, dt=0.001, sim_class=simulator.Simulator, **sim_args):
> >              Fundamental unit of time for the simulator, in seconds.
> >          sim_class : child class of `Simulator`, optional
> >              The class of simulator to be used.
> > +        model_seed : int, optional
> > +            Random number seed to overwrite the model.seed property of the
> > +            generated model. This allows the new model's seed to be different
> > +            from the original model's seed.
>
> @hunse <https://github.com/hunse> can say more, but the idea was to have
> two seeds: one for building the model, but also one that seeds the
> simulator's RNG. The idea being that you might want to generate the same
> model, but then still have variability when you run it to make sure that
> that it's robust to injected noise, or some other source of noise in the
> simulation. We were thinking about making a nonlinearity that generates
> random values, and the simulator seed would be used for instances of that
> nonlinearity.
>
> —
> Reply to this email directly or view it on GitHub<https://github.com/ctn-waterloo/nengo/pull/170/files#r7007260>
> .
>