All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.tinkerpop.gremlin.algorithm.generator.Distribution Maven / Gradle / Ivy

The newest version!
package com.tinkerpop.gremlin.algorithm.generator;

import java.util.Random;

/**
 * Interface for a distribution over discrete values.
 * 

* Used, for instance, by {@link DistributionGenerator} to define the in- and out-degree distributions and by * {@link CommunityGenerator} to define the community size distribution. * * @author Matthias Broecheler ([email protected]) */ public interface Distribution { /** * Initializes the distribution such that expectedTotal is equal to the expected sum of generated values * after the given number of invocatiosn. *

* Since most distributions have an element of randomness, these values are the expected values. * * @return A new distribution configured to match the expected total for the number of invocations. */ Distribution initialize(final int invocations, final int expectedTotal); /** * Returns the next value. If this value is randomly generated, the randomness must be drawn from * the provided random generator. *

* DO NOT use your own internal random generator as this makes the generated values non-reproducible and leads * to faulty behavior. * * @param random random generator to use for randomness * @return next value */ int nextValue(final Random random); /** * Returns the next value conditional on another given value. *

* This can be used, for instance, to define conditional degree distributions where the in-degree is conditional on the out-degree. *

* If this value is randomly generated, the randomness must be drawn from the provided random generator. * DO NOT use your own internal random generator as this makes the generated values non-reproducible and leads * to faulty behavior. * * @param random random generator to use for randomness * @param otherValue The prior value * @return next value */ int nextConditionalValue(final Random random, final int otherValue); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy