/** * @return A new {@link RandomModel} that uses a {@link MersenneTwister} with * seed: {@link RandomModel#DEFAULT_SEED}. */ @CheckReturnValue public static Builder builder() { return Builder.create(DEFAULT_SEED); }
@Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof RandomModel.Builder) { RandomModel.Builder that = (RandomModel.Builder) o; return (this.seed == that.seed()) && (this.rngSupplier.equals(that.rngSupplier())); } return false; }
static Builder create(long seed) { return create(seed, DEFAULT_RNG); }
Builder() { setProvidingTypes(RandomProvider.class); }
Simulator(Builder b) { modelManager = b.mmBuilder .add(SimulatorModelBuilder.create(this)) .addDefaultProvider( RandomModel.builder().withRandomGenerator( StochasticSuppliers.constant(b.rng))) .addDefaultProvider( TimeModel.builder() .withTickLength(b.tickLength) .withTimeUnit(b.timeUnit)) .build(); toUnregister = new LinkedHashSet<>(); clock = modelManager.getModel(TimeModel.class); rand = modelManager.getModel(RandomModel.class); }
@Override public RandomModel build(DependencyProvider modelProvider) { return new RandomModel(rngSupplier().get(seed())); }
/** * Create model. */ @Before public void setUp() { model = RandomModel.builder().build(mock(DependencyProvider.class)); }
/** * Returns a copy of this builder with the specified random generator * supplier. * @param supplier The supplier of random generators. * @return A new builder instance. */ @CheckReturnValue public Builder withRandomGenerator( StochasticSupplier<? extends RandomGenerator> supplier) { return create(seed(), supplier); }
/** * Returns a copy of this builder with the specified seed. * @param seed The random seed. * @return A new builder instance. */ @CheckReturnValue public Builder withSeed(long seed) { return create(seed, rngSupplier()); }